Make T.js asynchronous

- [x] Use node EventEmitter to emit events
- [x] Remove callback functions everywhere
- [x] All error conditions emit `error`-events with an instance of `Error` as only parameter
- [x] Make all non-getter methods chainable
- [ ] <del>Easier integration of templates and routing</del>
- [x] 100% documentation coverage!