Modified connect method so that connection options needed for amqps tls connection can be supplied.
Refine socket open with options, and provide SSL example

We can make the socket open more compact by using the callback-y form
of connect.
Avoid using an undocumented version of net.connect

I had assumed net.connect had the same signatures as tls.connect;
specifically, the

    net.connect(port, host, options, callback)

form. However, this only works by coincidence (can you spot it?
https://github.com/joyent/node/blob/0882a7506394e07ae6564ccf3db401b8fb7f7071/lib/net.js#L86).

To avoid that, I'm now using the `connect(options, callback) form that
`tls` and `net` have in common.
Put project status and compatibility in the readme
Signal an error if the socket closes out from under us

The server can close the socket summarily, for example if it decides
the client hasn't been keeping up heartbeats. To detect this I listen
for the 'end' event on the socket. This needed a bit of extra plumbing
in the test harness.

This changes the semantics of 'error' and 'close'; previously, only
one was ever emitted from a connection or channel. However, Node.JS's
streams don't behave like that, so I've changed it. 'close' is always
emitted, and 'error' beforehand if the closure is due to a problem.
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.