Refactor

 - Added JSHint
 - Refactored code to match Mammal JS style guide
 - Split CLI out from lib
 - Added test framework and some initial tests
 - Some general cleanup
 - Fixed stdin listener
 - Whole load of comments

This fn returns a promise, we could drop the `.fail` handler from `src/entry.js:42` and do all our error reporting here.