Print precise contexts for duplicate field names.

compiler/add_type.m:
    Record the context of the field name, not the context of the data
    constructor as a whole. The more fields a constructor has, and the
    more extensive comments they each have, the more misleading the
    overall context will be. (The code that uses these contexts does not
    need changing.)

compiler/prog_data.m:
    To store the information that add_type.m needs, create a space for
    the context of each field name next to the name itself. This requires
    breaking an old type equivalence; most of the "conform" changes below
    result from this.

compiler/prog_io_type_defn.m:
    When parsing type definitions, record the context of each field name
    in the new space.

compiler/field_access.m:
compiler/hlds_data.m:
compiler/hlds_pred.m:
compiler/make_hlds_passes.m:
compiler/mercury_to_mercury.m:
compiler/ml_code_util.m:
compiler/prog_type.m:
compiler/recompilation.check.m:
compiler/type_ctor_info.m:
compiler/typecheck.m:
compiler/typecheck_errors.m:
compiler/xml_documentation.m:
    Conform to the changes above.

compiler/post_typecheck.m:
    Conform to the changes above.

    Move some code out of a loop.

    Give a predicate a more meaningful name.

tests/invalid/repeated_field_name.{m,err_exp}:
    A new test case for this change, which defines a field named f2
    three times. Before this change, the compiler reported:

    repeated_field_name.m:008: Error: field `repeated_field_name.f2' multiply
    repeated_field_name.m:008:   defined.
    repeated_field_name.m:008:   Here is the previous definition of field
    repeated_field_name.m:008:   `repeated_field_name.f2'.

    which is a bit baffling. We now report

    repeated_field_name.m:011: Error: field `repeated_field_name.f2' multiply
    repeated_field_name.m:011:   defined.
    repeated_field_name.m:010:   Here is the previous definition of field
    repeated_field_name.m:010:   `repeated_field_name.f2'.
    repeated_field_name.m:012: Error: field `repeated_field_name.f2' multiply
    repeated_field_name.m:012:   defined.
    repeated_field_name.m:010:   Here is the previous definition of field
    repeated_field_name.m:010:   `repeated_field_name.f2'.

    which gives the correct contexts, and also reports BOTH duplicates.
    (Previously, we generated two identical error messages, but then sorting
    the list of errors removed one of them.)

tests/invalid/Mmakefile:
    Enable the new test case.