Add configurable socket timeout event

When an application regains a lost network connection, there is no way
to detect that the Twitter Stream socket connection is stale and no
longer capable receiving data.

This adds an optional timeout setting that will fire a timeout event if
the socket has not received a packet within the configured timeout
window.

Applications can then bind to the timeout event and manually close, and
maybe even re-open, the Twitter Stream API connection.

If no timeout option is configured, no timeout is set on the socket so
it is completely backwards compatible.
Update LICENSE