Change getSetting/setSetting to asynchronous style

Functions now return a condvar which will return the value either
immediately or sometime later. Call recv() in mainline for synchronous
use, or cb() with a sub argument for asynchronous.
Clean up the requires a bit

Just require subclasses as needed, to avoid a use-loop.
Fix: queued command execution

It was repeat sending the same command, and not calling the callback
function.