Make mmlParse$parse use the REPLPhrase “entrypoint”.

The main advantage of this is support for expressions as REPL inputs.
It also allows the REPL to handle structure declarations.
Make the lexer return the semicolon it finds to the parser.

The REPLPhrase non-terminal relies on seeing a trailing semi-colon.
There is nothing deeply subtle about this but it does mean that it
makes sense to talk of parsing REPLPhrase* (not that we do this at the
moment but still). It is not possible to parse REPLPhrase* without the
semicolons because of the handling of top-level expressions, which
need to be terminated with semis. Also, declarations preceding
expressions need to be followed by semi-colons.

Thus (tested with poly so it must be true):

  val x = 4 3                              (BAD)
  val x = 4 3;                             (BAD)
  val x = 4; 3                             (BAD)
  val x = 4; 3;                            (OK)
  structure s = struct val x = 3 end 4     (BAD)
  structure s = struct val x = 3 end; 4    (BAD)
  structure s = struct val x = 3 end; 4;   (OK)
Adjust commented out EVAL-calls in repl_fun to make them work.

In particular:
* add a semi-colon to the input
* make sure that mmlParse$parse is used rather than the
  bogus (new_constant-ed) parse from semantics/replTheory

Curiously, the penultimate EVAL (calling infer_prog) then causes
PolyML 5.4.1 to core-dump...