Refactored CLI interface

Fixes #9 

Dynamic usage message is made using string template/format and conditionals instead of string concatenation and exceptions.