Allow a parse tree to have arbitrary extra data at leaves.

This is all to do with the possibly misplaced desire to have the
tokens of the language be a finite set. This causes problems if you
adopt the standard programming model, which has things like

  IntLiteral of int

and

  StringLiteral of string

as possible forms for tokens.

If this requirement causes me any more pain I’m going to do away with
it.
Remove use of finite_image tycon in grammar theory.

This really was causing too much pain. The latest example of this was
the fact that I couldn’t pattern-match against token values because
mk_finite_image is not an officially recognised constructor.