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.