Minor tweaks to the cache object base class.  The per-object mutex is actually
in the CacheEntry class, not the CacheObject, so you can't lock it until you
have an entry.  This isn't a big deal unless your objects aren't actually
part of a cache yet.  I changed it so that lock/unlock have no effect if you
haven't joined to a cache yet, probably not ideal, I'll think about moving
that mutex.

I also fixed it so you can lock/unlock even when const.
Modified the Bu::CacheBase API, what was erase is eraseNow, and erase is about
to be re-engineered to actually do a lazy erase like removing an iNode in a
posix filesystem.  While the file remains open it exists, but the references
visible to the user on disk are gone.
Fixed caching changed issue.  The cache now marks objects as unchanged for you
after they are saved.  It needs some more testing, but the theory is sound.