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.
Done with returing a reading. I think it still makes sense for the sensor object to 'trust' the KATCPSensorsManager to arrange the update. We might refactor the responsibilities between the KATCPResourceClientSensorsManager, KATCPResourceClient and InspectingClient instances later, but I'm happy with the basic arrangement for now.