socket.io returns err.data if it's available

Currently when using handshake it's hard to determine from the client side that there was an authorization error. You have to do string compare on known error messages. Returning some metadata through error.data can make detecting authorization errors easier.