Add test cases for bug300

tests/valid/bug300.m:
tests/valid/Mmakefile:
    This simple test case can detect the bug in Java grades.

tests/valid/Mercury.options:
    Run the new test case with --optimize-constructor-last-call

tests/hard_coded/bug300.m:
tests/hard_coded/bug300.exp:
tests/hard_coded/Mmakefile:
    This more complicated test case can detect the bug in C grades.  However
    it requires specific CFLAGS, beyond LCMC, to do so.  The symptoms of the
    bug appear differently in this case.

tests/hard_coded/Mercury.options:
    Setup MCFLAGS so that the test case can detect the bug.
Fix bug300

The last call modulo construction (LCMC) transformation ignores from ground
term scopes, this is incorrect when the from ground term scope makes ground
one of the variables whose construction we're trying to move before a
recursive call.  This can occur when the from ground term scope occurs in a
non-recursive case (and possible alternative recursive cases).  This was
only affecting non-C grades because the C grades transform the from ground
term scopes into single unification before LCMC is performed.

We fix this bug by performing the LCMC transformation on a from ground term
(FGT) scope by treating the scope as a construction unification goal.  This
is correct because such a goal is always the last goal in the FGT scope.  We
only process scopes that bind one of the variables whose construction we're
trying to optimize.

compiler/lco.m:
    As above.

NEWS:
    Add news file entry.