Eliminate some unnecessary labels in low level grades.

In low level grades, do not emit labels at which we start while loops
if the only use of the label is backward branches from inside the loop,
since all these get turned into "continue" statements.

Since the assembly code we now have to surround labels with inhibit
optimization (they have to, at least to some extent, since they are designed
to prevent gcc from optimizing them away), this change yields a speedup.
On tools/speedtest, the speedup is about 1%.

compiler/llds_out_file.m:
   Find out whether we can leave labels at which we start while loops
   undefined.

   Fix some formatting.

compiler/llds_out_instr.m:
   Allow llds_out_file to tell us what it found out, by replacing a pair
   with a tuple type with a field for this info. Use this type to consolidate
   multiple arguments into one in some places.
Fix mantis bug 302.

compiler/module_imports.m:
   Use a det search instead of a nondet search, to avoid running out of nondet
   stack.
Add constant structure support to Java backend

This change enables constant structure support for the Java backend for the
structures introduced by the polymorphism pass.

compiler/const_struct.m:
compiler/ml_unify_gen.m:
    Enable constant structure support

java/runtime/TypeInfo_Struct.java:
    Add a constructor to the TypeInfo structure for Java.  This constructor
    has the interface expected by the polymorphism code.

    Never expect to be passed the arity to the varargs constructor.

compiler/polymorphism.m:
compiler/ml_unify_gen.m:
    Change how we avoid creating TypeInfos with an explicit arity argument
    for Java

    We never specify the arity for a TypeInfo_Struct in a Java grade.  There
    are two reasons: this is a little difficult to handle due to overloading
    rules and it is not necessary.

    This is handled by removing these arguments in the MLDS backend.
    However, the current solution does not work when we create TypeInfos as
    constant structures.  Therefore this change removes the special case
    from the MLDS backend and instead never creates the arity arguments
    during the polymorphism pass.  rtti_to_mlds.m didn't need updating as it
    already had the correct behaviour.

compiler/rtti_to_mlds.m:
    Update a comment.
Merge branch 'version-14_01_1-features'