Channels Refactoring + Client Interface

Refactor channels code
Start client interface for driving a client, allowing GUI front-ends