Avoid duplicate labels in target code generated for tag switches.

In a MLDS tag switch, the code of each case was generated once then duplicated
for multiple primary tags.  This produces invalid target code if the duplicated
code contains a label, e.g. to break of out of binary search loop.

The solution in this patch is to not duplicate the code if it contains a label,
but to regenerate it everywhere it occurs to ensure new labels.

compiler/ml_tag_switch.m
        As above.

tests/hard_coded/Mmakefile:
tests/hard_coded/tag_switch_dup_label.exp:
tests/hard_coded/tag_switch_dup_label.m:
        Add test case.