Uniter: extract hook context

pull hook context out into its own package, and split it up into a bunch of files organised roughly by intent. There's nothing clever here, but it helps make clear just how parlous the state of the testing here has become, and it feels like a necessary step towards sanity in the uniter package.