Heartbeating

Design taken largely from RabbitMQ's heartbeating. I can't rely on
(there being) socket stats, as RabbitMQ does, so I manually maintain
'sent since last check' and 'recv since last check' flags. I'm not
best pleased with that bit; however, I think it's used in RabbitMQ
largely to avoid having to store more state somewhere (in the
reader/writer processes?), something which is easier for me, so it's
not a terrible compromise.
Simplify heartbeating by dropping the 'actual time passed' check

Since I'm assuming timers will run more or less to deadline for the
purpose of *sending* heartbeats, I may as well do the same for
receiving heartbeats.
Minimal test for connection heartbeart

 - toClose -> toClosed
 - negotiation during connection.open was wrong: zero from the server
   should mean 'pick what you want'
 - a little time wizardry to make the test run tolerably fast
Tidy away lurking errors from heartbeats

Errors that might occur after a timer fires cause mocha problems,
understandably.