feat(token): add first command: token

Besides the token command, this includes much of the underlying
design that all commands will build off of.
nit: suggest `onExit` rather than just `exit`; based on the name I initially thought that calling this function would exit the program