Add fast.assign()

Adds `fast.assign()`, similar to [Object.assign()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) but with simpler (faster) error handling semantics.

> Note: node doesn't ship with Object.assign() support yet, I've included a shim which *does* follow the spec more closely for comparison, so this is not necessarily "Native vs fast.js" *yet*. SpiderMonkey nightly does support it though.

**V8 Benchmarks (shim)**

```
  Object.assign() vs fast.assign()
    ✓  Object.assign() (shim!) x 228,597 ops/sec ±1.81% (87 runs sampled)
    ✓  fast.assign() x 726,256 ops/sec ±1.97% (87 runs sampled)
    ✓  underscore.extend() x 693,434 ops/sec ±1.65% (80 runs sampled)
    ✓  lodash.assign() x 509,777 ops/sec ±1.48% (89 runs sampled)

    Result: fast.js is 217.70% faster than Object.assign() (shim!).

  Object.assign() vs fast.assign() (3 arguments)
    ✓  Object.assign() (shim!) x 204,330 ops/sec ±1.19% (86 runs sampled)
    ✓  fast.assign() x 721,311 ops/sec ±1.63% (90 runs sampled)
    ✓  underscore.extend() x 694,865 ops/sec ±1.78% (87 runs sampled)

    Result: fast.js is 253.01% faster than Object.assign() (shim!).

  Object.assign() vs fast.assign() (10 arguments)
    ✓  Object.assign() (shim!) x 54,573 ops/sec ±1.88% (88 runs sampled)
    ✓  fast.assign() x 150,939 ops/sec ±1.51% (82 runs sampled)
    ✓  underscore.extend() x 157,677 ops/sec ±1.85% (82 runs sampled)

    Result: fast.js is 176.58% faster than Object.assign() (shim!).

```

**SpiderMonkey Benchmarks (native)**

```
  Object.assign() vs fast.assign()
    ✓  Object.assign() x 227,115 ops/sec ±0.96% (66 runs sampled)
    ✓  fast.assign() x 981,945 ops/sec ±0.20% (69 runs sampled)
    ✓  underscore.extend() x 640,273 ops/sec ±1.95% (65 runs sampled)
    ✓  lodash.assign() x 797,574 ops/sec ±0.32% (69 runs sampled)

    Result: fast.js is 332.36% faster than Object.assign().

  Object.assign() vs fast.assign() (3 arguments)
    ✓  Object.assign() x 181,627 ops/sec ±1.53% (66 runs sampled)
    ✓  fast.assign() x 859,166 ops/sec ±0.19% (70 runs sampled)
    ✓  underscore.extend() x 359,289 ops/sec ±1.61% (53 runs sampled)

    Result: fast.js is 373.04% faster than Object.assign().

  Object.assign() vs fast.assign() (10 arguments)
    ✓  Object.assign() x 58,197 ops/sec ±1.08% (66 runs sampled)
    ✓  fast.assign() x 246,278 ops/sec ±0.20% (69 runs sampled)
    ✓  underscore.extend() x 110,505 ops/sec ±0.99% (67 runs sampled)

    Result: fast.js is 323.18% faster than Object.assign().


```