Reconnection events propagated to socket

Now `reconnecting` (created the event, and passing attempts to it) and `reconnect` events are propagated to socket, as well as `reconnect_attempt`, `reconnect_error` and `reconnect_failed`.
I suggest removing all the normal emit's from the source, and adding a `this.emit` in to your propagateEvent so you don't have to create duplicate function calls.