merge now returns deeply immutable object in all cases

fixes bug with merge when overwriting target object