ES6 typings

This is still work in progress. Feedback is appreciated.

Still missing:
- Typed arrays
- Promise
- Reflect
- Loader
- Use of known symbols

The type of `arguments` and some other weird things have a `length` property and elements `0` through `length - 1`, but their `__proto__` is not `Array.prototype`, so things like `arguments.slice(0)` fail instead of succeeding like you might expect.