Remove inefficient/unnecessary command messages

- Stop publishing messages whenever a transport connects/reconnects
- Stop publishing messages whenever a transport connection is lost
- Add a flag to OnDisconnected to indicate wether the client
  cleanly disconnected or timed out (possibly due to switching servers).
Trigger OnConnected with a /start request

Triggering OnConnected while handling the /connect request made it
difficult to report errors and send/process messages while OnConnected
was running.
Stop blocking transport WriteQueues

- Always return a valid Task from ForeverTransport.EnqueueOperation
  allowing us to reduce allocations inside of Subscription.Work.
- This will prevent older clients that don't make a /start request from
  receiving proper errors when OnConnected throws.
Ajax logic unification in the JS client
Reindent calls to the new transportLogic.ajax function in the JS client
JS Client - use /start requests to connect

- include clientProtocol in the query string of all requests
.NET Client - use /start requests to connect

- include clientProtocol in the query string of all requests
Stop sharing MyReconnect instances in our tests