Added keyspec to changefeed_stamp_t.
Distance computation with own implementation of Vincenty algorithm (buggy).
Proper error handling in Geo ReQL commands.
Replaces own (broken) implementation of the Vincenty algorithm by Karney 2013, which is faster and seems to work.
Circle command and bug fixes
point changefeeds seem to be working
Fixed changefeed RSI.
Make low-level cluster API connection-based rather than peer-based.

This should eliminate an entire class of bugs, including #2264. Many RethinkDB components have a procedure that is supposed to happen for every connection. For example, the `directory_read_manager_t` expects to receive one initialization message on each connection, followed by some number of update messages. However, the old low-level cluster API didn't explicitly expose the concept of a connection, so components would sometimes get confused when one connection was dropped and a new connection appeared for the same peer in a short period of time. This was the cause of #2264. These changes directly expose the concept of a connection, which should make those bugs impossible.

This commit also removes several layers of abstraction: `connectivity_service_t`, `message_service_t`, and `message_multiplexer_t`.
Use `os.path.splitext` to check file extensions.
Support for units and other opt args, minor refactoring.
Also allow non-standard reference ellipsoids (e.g. if you want to perform geodesics on Jupiter or something)
merging in #2610 remove pbcpp.py
Improved intersection operator. Now works on lines, points etc. and considers points on the outline of a polygon as intersecting.
rectangle term, includes term. Bug fixes.
Fixed/removed some TODO!s in S2
Fix compilation errors on GCC
Fixed some compilation issues and style warnings
Merge branch 'next' into daniel_geo

Conflicts:
	src/rdb_protocol/ql2.proto
Fixed error handling for distance opt args
Improved error handling.
Includes term was broken, plus compilation fixes.