Refactor much of the cli

- all output logs are now events so they can be toggled
- folder renamed from commands to cli
- almost all logic removed from the binary
- add usage information to roots tpl command
- add 'quiet' option which suppresses all cli output

Special thanks to [this wonderful presentation](http://michaelbrooks.ca/deck/jsconf2013/) which contains a lot of best practices and ideas implemented in this PR.

My aim here is to make sure the CLI is thoroughly tested before this PR is merged. Whoo!