Make T.js asynchronous

- [ ] Use node EventEmitter to emit events
- [ ] Remove callback functions everywhere
- [ ] Make all non-getter methods chainable
- [ ] Easier integration of templates and routing