Make transports dynamic loadable (based on available classes)

I have a project where I only support XHR. By changing the SocketIOTransport initialization to "dynamically" load the neccessary (& supported) classes, I don't have to include SRWebSocket in my builds (which results in less unused code and a smaller binary).