Object assign update

Updating Object.assign to newest ES6 decision (not in spec draft yet) that Object.assign takes multiple arguments.

Also asserting the length is correct, that it throws the right TypeErrors, and that in an error case, target is partially modified (https://twitter.com/awbjs/status/454320863093862400)