Started converting datum to use wire_string_t for object keys
Changed datum_t objects to have wire_string_t keys. Prepared wire_string_t for supporting a binary contiguous datum_t in-memory representation.
Merge branch 'next' into daniel_2244
Make shared_buf_t not suck by not adding another level of pointer indirection.
Also fixed binary base64 decode, which assumed that wire_string_t::data() would be null-terminated.
A little cleanup.
Replaced counted_t<datum_t> by datum_t.
Fixes bugs in previous commit
Fix datum exception handling (infinite recursion)
Fixes a compilation problem on GCC.
Make datum_t move-constructible
Reduce wire_string_t memory overhead by deserializing size on the fly. Still have to see if that's good. Might be slow.
Just removed a TODO
Preparation for merging next
Merge branch 'next' into daniel_2244

Conflicts:
	src/rdb_protocol/batching.cc
	src/rdb_protocol/btree.cc
	src/rdb_protocol/real_table.cc
	src/rdb_protocol/shards.cc
	src/rdb_protocol/terms/arr.cc
	src/rdb_protocol/terms/db_table.cc
	src/rdb_protocol/terms/geo.cc
	src/rdb_protocol/terms/json.cc
	src/rdb_protocol/terms/obj.cc
	src/rdb_protocol/terms/obj_or_seq.cc
	src/rdb_protocol/terms/pred.cc
	src/rdb_protocol/terms/random.cc
	src/rdb_protocol/terms/sort.cc
	src/rdb_protocol/terms/string.cc
	src/rdb_protocol/terms/time.cc
	src/rdb_protocol/terms/type_manip.cc
	src/rdb_protocol/terms/writes.cc
	src/rdb_protocol/val.cc
Renamed counted_datum_less_t to optional_datum_less_t
btree_info_t now has a wire_string_t for the primary key name to simplify the code.
Made constant strings errors, first_error, warnings constant wire_string_ts in datum.cc
Also made "data" a names constant.
Changed pathspec_t to use wire_string_ts
Fixes a memory corruption caused by an implicit cast from NULL to char *