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
Fixed std::isfinite compilation error on OS X.
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.
Add configured_limits_t type and percolate it to the easy places.
Use default limits for change feeds.

There's no obvious place for it to acquire the user's specified
versions, so we just pick the default :/
Propogate ql::configured_limits_t to everything that needs it
Break configured_limits to their own file
Stub parting optargs in.
Add limits to read_t and write_t.

Tim suggested this, and it seems to be productiev although protocol is failing with a weird error message.
Add copy constructor, since apparently we need it.
These do actually need to be modifiable.