Fix an old bug in mercury_float.h.

runtime/mercury_float.h:
    As above.
Impose a structure on library/string.m.

library/string.m:
    Group the predicates in this module into groups of related predicates,
    and put those groups of predicates into a logical order. Document
    this order.

    Remove some unnecessary promise_equivalent_clauses declarations.

    Give some variables and predicates better names, e.g. change the _2
    suffix on predicates that do loops to _loop.

    Move a predicate to string.format.m, since it is not exported, and
    it is not used anywhere else.

    Avoid overlong lines.

library/string.format.m:
    Add the moved predicate, with a better name and better variable names.