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.
Or just use it directly? I'm struggling today but I don't think I'm missing something?

```js
if (!Object.prototype.hasOwnProperty.call(nextSource, key)) {
````