JZ: Perform deep merge when inflating pathkeys

Previous commit used dict `dict.update()` which does not preserve
the dict tree or nested dicts for "pathkeys" with the same root name

So we now create a recursive merge method to sort that out