Implement katcp resource

More or less working basic implementation with .req and .sensor that works more or less like you'd expect. The whole API is async (i.e. you have to know your'e using an ioloop). Sync support will later be added by a wrapper around the whole object.

Some changes were made to inspecting_client.py to support this work, and tests were added for the new/updated functionality. No tests for the KATResource implementation, but that will come shortly. Has been smoke-tested a bit.

Note that the current work is only proceeding with enough generality to implement the one-level container -> devices hierarchy as traditionally exposed by the katcorelib KATConn object. The ABCs on which the implemenation is based tries to allow for general hierarchies, but no need to implement that just now.

Apart from the inspecting_client changes, the majority of the changes in this PR is independent of the rest of the katcp module, adding new functionality in a separate module. Should not break anything else. Want to merge it before this work diverges too far from master though.
Could be simpler with.
if callback not in self._inform_hooks[inform_name]:
   ---->