[WIP] Honor session hooks

TODO:

- [ ] Add tests for `merge_hooks`
- [ ] Add tests to ensure that Session hooks can be overridden by request hooks.
- [ ] Fix logic so that there is no API braking change. Currently `merge_hooks` changes the behaviour of how hooks behave.