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.