add the ability to specify the address of a native function as a finalizer
the advantage of this is that we know no julia code runs, so it is safe to
free the underlying object immediately, rather than waiting for another GC
cycle to be sure no references to the object were added.

this is specifically designed for BigInt and BigFloat, which get faster and
use less memory with this change (helps #4169)
Merge branch 'master' of github.com:JuliaLang/julia into jb/nativefinalizers
clean up native finalizers code
Merge branch 'master' of github.com:JuliaLang/julia into jb/nativefinalizers