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`.
Add a new unit test for the connectivity layer. Fix two race conditions exposed by the unit tests. Fix several style issues.
Renamed cluster_manager_t back to connectivity_cluster_t.
Move back some code that was moved unnecessarily
Use explicit captures instead of '[=]' in lambdas.
Fix compilation errors and some style issues.
Enforce 90-character line length limit on lines changed in this set of commits.
Change method() into this->method() in lambda so g++ accepts it
Add DEBUG_VAR on mutex_assertion_t::acq_ts so that it builds with DEBUG=0.
Fix miscompilation in lambdas caused by gcc 4.7.2.
Remove an incorrect comment; minor style changes.
Merge branch 'tim_sessions' of github.com:rethinkdb/rethinkdb into tim_sessions
Fix compilation error in previous commit.
Fix some errors that the style checker found; move message_handler_t out of connectivity_cluster_t.
Merge branch 'tim_sessions' into next

Conflicts:
	src/unittest/rdb_backfill.cc
	src/unittest/rdb_protocol.cc