Introduced promise/deferred methods

Finally got away from that broken publish/subscribe via broadcast.  Now when we send a command, we will wait for a response before contining on.
This simplified the controllers big time.