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

Rather than returning a string, these could throw the error. This will be alot cleaner once this call is wrapped in a `Q` call