Mark varset.merge_subst as obsolete.

library/varset.m:
    Mark merge_subst and merge_subst_without_names with `pragma obsolete'.
    The comments on them have been requesting people to use merge_renaming
    and merge_renaming_without_names instead for about seven years, which
    I think is enough warning :-)

    Avoid using the obsolete predicates in varset.m itself.

library/term.m:
    To make it possible to avoid using the obsolete predicates in varset.m
    itself, add predicates that apply renamings, not substitutions, to a
    term or a list of terms. Provide a renaming type to make this more
    convenient.

    Note that when term.apply_renaming actually does a renaming, the context
    on the new term will be the original context, while term.apply_substitution
    would have replaced this with the context on the replacement term.
    I expect that in the vast majority of cases, the context does not matter.
    In cases where it does, I expect that which context is better depends
    on the situation; both choices have points in favor and against.

compiler/inst_graph.m:
compiler/prog_mode.m:
compiler/recompilation.version.m:
    Use merge_renaming instead of merge_subst, and thus avoid shenanigans
    with converting general terms back to variables.

compiler/rbmm.region_resurrection_renaming.m:
    Add an "rbmm_" prefix to some types, to avoid the type "renaming"
    being defined both by this module and (now) by library/term.m.

compiler/rbmm*.m:
    Conform to the type name changes in rbmm.region_resurrection_renaming.m..