Alter Marionette.normalizeUIKeys to return a new/non-mutated hash

Instead of mutating the original argument hash, create and return a new cloned hash
Addresses issue #1728
this is new functionality we should only fix the bug in this branch