Refactor hooks

* Limit the methods of the `Hooks` module to just the public API.
* Re-arrange code to put the public API at the top of the file.
* Clarify which classes in hooks.rb are considered private.
* Remove unneeded one-line helper methods.