Merges WebChannel and WebChannelTransport
Changes WebChannel's test to use a fake transport instead of fake socket io

It's best to rely on the layer of code that we're directly accessing on the tested code instead of mocking something that is being used indirectly. Also, WebChannel doesn't always use SocketIO, so it's good to test it with a generic transport to make sure that it works with any transport at all, not just SocketIO.