Deep merge hashes for *-sites merge with site config.

Hash.merge doesn't recursively merge, and so causes
'*-sites' -> 'ssl' -> {..} to be lost on merge.

A function to copy the node ImmutableMash attributes
to hashes was needed in order to get around the
immutability issue.