Optimize clone, 49x improvement

I took a crack at optimizing cloning. On my box (tests are benchmark.js in Node on an MBP), I got this pre-optimization:

```
>> clone x 36,536 ops/sec ±0.96% (96 runs sampled)
```

(bigger is better).

I did two passes. In the first one, I replace the `momentProperties` object with an array of strings, reorganized the clone so that it doesn't sort of do it twice (once in `cloneMoment` and once in `extend`), and then I changed the clone to copy the fields over. Results:

```
>> clone x 220,760 ops/sec ±0.65% (90 runs sampled)
```

So 6x. The second pass, I made `momentProperties` into an empty list (can still be added to by plugins), and then made the clone function actually just look at each field and copy them old-school. Results:

```
>> clone x 1,786,933 ops/sec ±0.97% (91 runs sampled)
```

So 49x the original.

Caveats:

 * I broke plugin compat, probably just tz. `momentProperties` is now an array, not an object, which makes it a bit faster to iterate through. We can either switch it back to an object and take the perf hit for moment-tz or we can fix moment-tz.
 * I need to write a test for the plugin field cloning
 * **I broke one thing**. The `_lang` object is defined on the prototype and can be overriden by the instance. Since we don't check `hasOwnPrototype()`, the reference gets copied on clone either way (i.e. it gets "promoted" from prototype property to instance property). I don't think that has any practical effect unless you redefine the language in the prototype (weird), so I deleted the test, but I could be missing something. We could either use `hasOwnProperty()` in this one place, or we could live with it.