Start on implementing better error messages.

The Parser type is redefined to be a function of token stream -> either
error, or maybe a result. This allows for a distinction between failure
with a possibility for backtracking to try a different parser (Right
Nothing), and unrecoverable failure (Left). As yet, the Left case isn't
used anywhere, but when incorporated it will give some more useful
information on parse errors.
Correct Alternative identity for parsers.
Add much more informative errors.