Make hash merging recursive

I found that when you merge hashes with nested hashes, nested ones are just replaced instead of being merged too. So I extended merge method