Make table interface abstract

Introduced a new abstract interface for the query language code to send queries to tables. This interface is approximately equivalent to the old table_t, except that it only represents the table itself, without any of the other data that table_t carried such as the use_outdated flag, the secondary index name, etc.

The main implementation (and currently the only implementation) is real_table_t, which translates its queries into read_t and write_t objects and passes them on to an underlying namespace_interface_t. In the future there will be another implementation for artificial tables.

I also separated out the parts of the rdb_protocol/ directory that are responsible for communicating with the B-tree and clustering code into a rdb_protocol/real_table/ sub-directory.
Correct a typo in a comment.
Remove an RSI comment that isn't relevant.
Made base_table_t API work in terms of datum_t instead of store_key_t. Fixed a bug where changefeed::client_t accessed a namespace_interface_t from the wrong thread.
Don't pass optargs to base_table_t, because it can get them from the env_t.
Merge branch 'next' into tim_abstract_table_interface

Conflicts:
	src/clustering/administration/reql_cluster_interface.cc
	src/rdb_protocol/datum_stream.cc
	src/rdb_protocol/env.hpp
	src/rdb_protocol/real_table/changefeed.cc
	src/rdb_protocol/real_table/changefeed.hpp
	src/rdb_protocol/terms/seq.cc
	src/rdb_protocol/terms/writes.cc
	src/rdb_protocol/val.cc
	src/unittest/rdb_btree.cc
	src/unittest/rdb_env.cc
	src/unittest/rdb_protocol.cc
	src/unittest/test_cluster_group.hpp
Move parts of datum_range_t into the real_table/ directory, and the rest into namespace ql.
Fix various style issues.
Rename the `get_all_sindex_id` parameter to `sindex`.
Merge branch 'next' into tim_abstract_table_interface