Add deep-merge & deep-merge-with

These differ from merge in that they will recursively merge maps that
appear at the same key for multiple merged maps, instead of just
replacing the maps wholesale with the last value (like merge does).

We are using these in the Node Classifier, but they seemed general enough to go in here.