Clean up string.format.m some more.

library/string.format.m:
    Provide target predicates that format_call.m can call.

    Assume that we are running on at least a 32 bit platform.

    Convert (C->T;E) to (if C then T else E).

    Shorten too long lines.
Resolve the things I noticed cleaning up string.m.

library/string.m:
    Document why line and text_file are here.

    Clarify comments about surrogate code points.

    Document codepoint vs code_point.

    Remove the workaround for a very old bug in egcs.
Optimize the det_info structure.

compiler/det_util.m:
    Delete three fields from the det_info structure. Apparently they
    haven't been used for some time now.

    When updating other fields that are likely to be set to the old value,
    check whether the new value is the same as the old, and avoid allocating
    a new det_info structure if it is.
Document the new require_switch_arms_* scopes.

doc/reference_manual.texi:
    As above.

NEWS:
    Announce the new scopes.
Fix an old copy-and-paste bug.
Fix an old bug.

compiler/make_goal.m:
    Assignments are supposed to be det, not semidet. The only reason why
    this hasn't been caught before was that the only call site that could
    call make_simple_assign was never actually reached.
Update the list of the compiler's largest modules.