Refactor: move cli logic into cli client

First of a few refactors to allow multiple clients / frontends for
Delve. Current implementation now uses a cli client, but conceivably we
could have an http or socket based client as well.