Inspecting client state loop

The inspecting client state is now managed by a single coroutine running a 'state-machine' loop. Also yields on  he user supplied state-change callback, serialising the whole connect - inspect - sync process.

Sorry for the dirty commits, started out as a 'simple' exercise to add tests to the new KATCPResource functionality, but ended up needing to do the rather large inspecting client rework to get things working properly.