Hide Object.assign polyfill behind a module

Because the JS community's polyfilling infrastructure sucks and we'll
have to fix it for them before we require this.

JSX spread uses React.__spread
(which might get special behavior for key/ref, not sure yet)

This never uses the native implementation and throws for prototype chains.
Once the native implementations are faster, we'll start using them.
Fiiine. I put it there in the actual polyfill since it executes in global scope and I didn't want to add another closure. But I guess I can move it out just for this.