ref(client): move control plane stuff to backend

In preparation for writing tests for `deisctl`, I have abstracted the
concept of the `deisctl` client and the underlying backend clients which
deisctl talks to. In our case, we only have one, which is the fleet
backend. However, in order to properly test `deisctl`, we need to
create a new backend which we can use locally. This is a first pass
at refactoring the client in order to better flesh out these
requirements.

Note that `deisctl config`, `deisctl update` and `deisctl refresh-units`
call docopt again and/or are hardcoded to fleet in some way. This
is bad, as we cannot tell `deisctl config` to use the client's
corresponding backend. This will be addressed in another PR.

I've also removed the commands `list-units` and `list-unit-files` as
they were redundantly calling `list`, were undocumented,
were fleet-specific commands, and were not used.

I've also moved `ExpandUser` from the fleet backend to `utils`, as some other packages rely on that function and it is better suited there.
We didn't drop version. This is CoreOS's version flag, which we don't use. Our version flag is native to docopt.go: https://github.com/deis/deisctl/blob/b4ccc2e37120dbec3bf487c33b76e3311a7b8d33/deisctl.go#L74