rewrite mappedKeys in UMap

this makes it behave correctly at re-init after change of def. There is
one case where it still may fail; if an arg with the same name was a
mapped arg in the old def, but is not a mapped arg in the new. It the
current set of UMapDefs this can't happen, but of course with future
additions it may.