Instead of modifying the first paramater of deep_merge due to the
use of the merge! function, instead use merge to return a copy of
the merged object. This allows one to continue to use the original
first parameter after the call to deep_merge.
Issue #20200 notes that the merge function does not
support nested hashes.
To prevent unintended side effects with changing merge,
add a deep_merge function instead.