List valid commands on CommandNotFoundException

This commit makes commands discoverable and emits more precise usage
information.  It also removes duplication between the Unix and Windows
scripts.  Closes #32.