Simplify queuing and asynchronous callbacks in the sphero driver.

* The queuing and dequeuing happens 100% outside of the robot definition.
* Every exported function (besides start) is now asynchronous.
It is first enqueued, called as soon as ready and a callback is invoked
when its done. The callbacks follow the error-first convention.
* In background, the driver constantly listens for new queued commands.