Address Julien's review comments.

compiler/format_call.m:
    Fix typos, and update a comment about future work.

compiler/parse_string_format.m:
    Use the right copyright.

library/Mmakefile:
    Fix issues with spaces vs tabs, and tabstop settings.
Do not transform calls to format predicates if debugging is enabled.
Add map.{foldl,foldr}5/12.

Add missing (mdi, muo) and semidet modes for map.foldl4 (foldr4 already has
them).

Strip unnecessary module qualification from the interface of the tree234 module
as per the current coding standard.

library/map.m:
	Add the above predicates.

	Add missing modes for map.foldl4/10.

library/tree234.m:
	Implement foldl5/12 and foldr5/12.

	Add missing modes for tree234.foldl4/10.

	Strip unnecessary module qualification.

NEWS:
	Announce the above additions.
Speed up map.{intersect,common,union} a bit.

library/map.m:
    The implementations of map.intersect, map.common and map.union all
    loop over the elements in their input maps, and (under different
    conditions) add them to a new map. This diff changes the loop predicates
    so that they build an assoc list instead, which is then turned into
    a map (a balanced 234 tree) at the end. This avoids the construction
    of all the intermediate versions of the map, which would involve
    a lot of rebalancing.

    On the compiler, this yields a very small speedup, but the speedup
    can be expected to grow with the size of the input lists, since insertions
    into deeper trees need more rebalancing on average.
Specialize calls to stream.string_writer.format.

compiler/format_call.m:
    As above.

    Factor out some common code.

compiler/module_imports.m:
    Fix a cut-and-paste bug.

library/builtin_modules.m:
    Add a way to retrieve the name of the stream module, since the compiler
    can now generate calls to stream.put.

tests/hard_codes/opt_format.{m,exp}:
    Expand this test case to include tests of calls to
    stream.string_writer.format.

    Make the existing tests a bit tougher as well.
Simplify the deep profiler's feedback mechanism.

mdbcomp/feedback.m:
    Accessing the old representation of feedback information required
    using partially instantiated data structures, dynamic type checking,
    and purity promises. Replace this with a straightforward representation,
    a tuple with a separate field for each supported kind of feedback
    information that contains "yes(...)" if feedback of the given type is
    available and "no" if it isn't.

    Document all the places that need to be updated when a new kind
    of feedback information is added.

    Remove the feedback information used by Tannier's old attempt
    at automatic parallelization, since it hasn't been supported for
    a while now, and won't be in the future.

    The feedback_info structure had a field named fi_program_name that
    comments on several predicates have identified as being the name of
    the Mercury system program (such as mdprof_create_report) that created
    the feedback_info structure. It was actually intended to hold the
    name of the program whose execution yielded the profiling data
    that the feedback_info was created from, and therefore the program
    whose recompilation the feedback_info was intended to help. This diff
    switches the documented meaning of the field from the former to the latter.
    To this end:

    - we rename the field;
    - we fix the comments referring to it,
    - we check whether the names match when new feedback data is added;
    - we check whether the actual program name matches the expected program
      name (if any) when reading in a feedback file, instead of delaying
      the check until later; and
    - we make write_feedback_file use the name in the feedback_info structure
      when writing it out, instead of a name redundantly supplied by its
      caller.

    In clients of feedback.m, some code used to put a program name into
    a feedback_info, and then later check whether the name in there was
    still the one it put there earlier. With this diff, we delete the check.
    We can do this because the profiled program name field of each
    feedback_info is set at initialization, and never changed afterwards.

    We now put a wrapper around each piece of feedback information in the
    texts of feedback files, to tell the code reading the file WHAT KIND
    of feedback information it is. We therefore increment the feedback file
    format version number.

    Group related predicates together.

    Give some predicates better (less ambiguous) names.

    Add prefixes to the names of some function symbols that are
    ambiguous without them.

compiler/handle_options.m:
compiler/introduce_parallelism.m:
deep_profiler/autopar_reports.m:
deep_profiler/autopar_search_callgraph.m:
deep_profiler/mdprof_create_feedback.m:
deep_profiler/mdprof_report_feedback.m:
    Conform to the changes in mdbcomp/feedback.m
Make tools/stdlines operate on any files.
Simplify and improve calls to format preds.

library/string.parse_runtime.m:
    Replace the two previous two level scheme for representing format string
    components with a simpler one level scheme, which should avoid some
    memory allocations, and which should also make switches faster.

library/string.format.m:
    Conform to the change in string.parse_runtime.m.

compiler/parse_string_format.m:
    Replace the two previous two level scheme for representing format string
    components with a one level scheme, as in string.parse_runtime.m.

    Record the context of all the values to be printed.

compiler/format_call.m:
    Previously, when we replaced calls to format predicates with calls
    that formatted each value to be printed, we used term.context_init as
    the context of the replacement goals. We now use the contexts recorded for
    the value. Likewise, for the calls to predicates that concatenated the
    results together, we now use the context of the original call.
    This should give more useful information to anyone who uses the deep
    profiler on code that was transformed by format_call.m.

    Avoid unnecessary updates to the conj_maps, which should make
    the operation of format_call.m itself faster.

    Gather identified format call sites immediately even inside disjunctions,
    instead of creating a list of the sites inside each disjunct, and then
    appending it to the end of the list of sites so far. This should also
    improve the speed of format_call.m.

library/maybe.m:
    Add a maybe_errors type, which is like maybe_error, but in which the
    error case contains one OR MORE error indications.

NEWS:
    Mention the new maybe_errors type.