Refactoring XHR requests

- Adding 'hook()' to `Base` prototype
- Created private `client.khxr()` which returns an instance of `KXMLHttpRequest`, which is now returned from `client.request()` to fix #40
- `client.request()` now uses events