Add deep-merge, deep-merge-with, and tests.

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).
Merge pull request #33 from aperiodic/deep-merge

Add deep-merge & deep-merge-with