ES6 typings

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

`callSite` is a misleading name; also, this doesn't have a return type annotation. It should be `string[]`.