Add type names to commands.
Update parser to use new commands, merge code from flooey's parser.

The parser currently only recognizes NOOP and everything else is considered
bad.

Right now, the parser has a Parse([]byte) method, but perhaps more ideomatic
would be to have it take a chan []byte and just have a long-running Parse()
method in a goroutine, that stops when the input channel is closed.  Or,
perhaps having it take an io.Reader is the right approach, and it can handle
reading from it internally.

Also added some simple tests for the parser, to get used to testing.  Seems
reasonably straightforward.