Added error event

I've added an error event because I was listening on `IrcSocket.impl.on('error')` and it seemed a bit messy. I've also changed these events to on instead of once incase someone decides to call `connect()` again later down the line without re initiating the object and a close or error happens again it wont bubble down.