Handling stream close event, and emitting destroy event.

Sometime the stream will be closed without raising the end or error events. In light of this it's very difficult to determine if the stream has been closed. Adding the close event allows us to catch any event which results in the stream closing.