Add usage message

If not passed any arguments, instead of throwing an exception for pattern match failure we just show the usage info and return an exit failure.  This also adds --help options to just print the usage info without the exit failure.  A little refactoring done so this extra logic doesn't come out as a hack.