Pass out reference values in update functions.

This is needed because these reference values will be inserted in to the
secondary index trees instead of copies of the value.
Clear blobs after sindex delete.

After the blob is no longer referenced in anyway we clear out the blob
so the pointed to space can be gced.
Only put references in the sindex btrees.
Use inline_size instead of value_size.

This fixes numerous bugs.
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.
Merge branch 'next' into merge_br

Conflicts:
	src/rdb_protocol/btree.cc
fixing crash on non-deterministic filter default value
changing wrong serializer version message to be more helpful
Merge branch 'next' into sam_1041

Conflicts:
	src/rdb_protocol/btree.cc
	src/rdb_protocol/btree.hpp
	src/rdb_protocol/lazy_json.cc
	src/unittest/rdb_btree.cc