Merge pull request #2350 from sebmarkbage/assign

Hide Object.assign polyfill behind a module
Use hasOwnProperty checks in Object.assign

Because IE8 polyfills add enumerable properties, this doesn't play nicely.
So for IE8 compatibility we add this check. Slower though. :(