Fix node xhr

- Fixed `Observable.hook()` when called on non-DOM Objects
- Refactored `XMLHttpRequest` shim to use an `Observable` instance
- Created `Base.dispatchEvent()`