Nested tags

@effron @samandmoore

Adds nested tag support.
Note that I tried to put this into a before_initialize method on mapping, but the block passed to first_or_create gets evaluated before after_initialize, so I just do it explicitly here.  I could've done it as a first_or_initialize, tap, and save!, I suppose.  That's probably cleaner and obviouser.