DDP Heartbeats

Add "ping" and "pong" messages to DDP.  This allows us to detect at
the DDP level when we've lost the connection.

Bump the DDP version to "pre2".  Preserve backwards compatibility by
not enabling pings if the negotiated DDP version is an earlier version.

Since receiving a ping indicates that the connection is alive, one
side of the connection doesn't have to send its own pings as long as
its receiving pings from the other side.  The ping interval defaults
to 30 seconds on the server and 35 seconds on the client, which means
that normally the pings go just one way (saving on bandwidth).

Increase the sockjs heartbeats from 25s to 45s, so they do not
normally fire.
Move the ddp-heartbeat test into tools/tests.
Move protocol out of heartbeat.js
Stop heartbeats on client side disconnect.

Use heartbeatInterval: 0 to disable heartbeats for testing.

No need to add `_internal` to the public connection API because we
can get to the internal session through the server.
Allow user to set heartbeat interval to 0 to disable sending pings.

Add test flag `_respondToPings` which allows tests to disable
responding to pings.
Add `ping` and `pong` to DDP spec.

Minimal writeup. Could stand to be fleshed out a bit. Maybe later.
Up sockjs heartbeat timeout (60s->100s) to match new sending interval (25s->45s)
Add debug print on timeout.

We have this now for sockjs timeouts, and it seems handy to have for DDP timeouts.
Comments.
Only print timeout message on the client.
Merge branch 'ddp-heartbeats' into devel