Adds configuration for socket timeouts

On occasion, I have noticed that the Keep-Alive connections are left
open long after the client has closed its end. For some reason, Node
doesn’t realize that the client has disconnected and keeps the socket
open for perpetuity. Since each connection has multiple temporary AMQP
queues and exchanges bound to it, this leaves the AMQP server littered
with dead buckets.

Allowing end users to specify a socket timeout gives them the ability to
alleviate this issue with whatever makes sense for their application.
Improves the EventSource configuration API

This changes the EventSource configuration API to be a bit less
implementation specific.
Moves AMQP-specific Subscription implementation into a separate module
Moves Fanout and Messaging into a separate module

* Moves Fanout Exchange creation logic into a separate module

* Moves AMQP-specific message implementation into a separate module
Moves AMQP Queue creation logic to separate module
Small amount of code cleanup
Adds a name to an anonymous function
Adds an explicit #connect method to the Client instance
Fixes a really, really dumb event binding

It would help to listen for the request closing, not the response...
Adds Heartbeat to prevent sockets from closing

Browsers will periodically close the SSE socket if they haven’t
received any data after a specific period of time.

This adds an configurable heartbeat option that can be opted-out.

* Defaults to enabled

* Defaults to one pulse every second. Can be configured by setting
  `heartbeat:4000` where the value is a time in milliseconds.

* Can be turned off by setting heartbeat:false
Version bump to 0.0.7