No longer confuse curl and libcurl in the configure script

Closes #2559
Review 1775 by @larkost
Correct exit code when test/run fails

Review 1675 by @larkost
JS driver - batchConf -> batch_conf - Related to #2707
Add a pre-release status script

Review 1796 by @larkost
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.
cursor.close() returns a promise -- #2591
Typo
Propagate the callback for cursor.close
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.
Improved comments about single-argument env_t constructor.
Used a "pristine" env for secondary index evaluation in rget_cb_t::handle_pair.
Made comments about sindex env_t mention global optargs.
Moved env_t construction to compute_keys.

This makes it more obvious that the secondary index function is
evaluated within a pristine environment.
Added regression test for #2767.
Don't pass optargs to base_table_t, because it can get them from the env_t.
fixing memory leaks when datum_t construction throws
Tolerate vector clock conflicts in the blueprint

Previously, namespace_repo_t would crash if there was ever a vector clock conflict in the blueprint. Now it silently ignores the conflict; while this isn't guaranteed to preserve availability, at least the server will stay alive so that the user can fix the problem.
changing datum_t::data_wrapper_t to be RAII