ooooohhhhhh, that's nice.  I totes forgot that you could pass a block to the merge method.

Is it a good idea to have it be this generic?  I think this merge logic makes sense for conditionals (some of which take the form of a hash), but I would hesitate to assume it would also make sense for future options that may be added that also take the form of a hash.

On a related note, I'm working on some tweaks to merge all kinds of conditionals (not just hashes).  I'll update the pull request.