Refactor the client API to remove core dependencies

* Move Job implementations to explicit classes
* Make daemon pluggable
* Other cleanup
* Add 'gear purge'
* Add -all to gear list-units (closes #173)