Return a Temporary from *Binding::Wrap.

Returning a JS<T> is GC-unsafe.

This commit also includes some cleanup around Node and Document reflection.
Merge pull request #2801 from Ms2ger/wrap-temp

Return a Temporary from *Binding::Wrap.