Fix a potential bug with erase range.

The bug was that it was possible for the erase range in the primary
btree to clean up a blob while the secondary btrees still had a
reference to it. Now this is impossible because we wait for the
secondary btree's erase to be completely done before we dispatch the
primary btree's erase.
Remove an unused constructor.
Adds a wrapper object for blobs.

This helps enforce some implicit constraints about what can be done with
blobs due to shared references.
Make a method not be public because it's unsafe.
Remove debugf in a unittest.