Handle transport failures occurring in the connecting state

- In the event of any transport error prior to the init message,
  the transport should immediately stop and allow the connection to
  fall back to another transport.
- In the event of any transport error during the start request,
  the entire connection should immediately be stopped

#2902

This is the JS equivalent to https://github.com/SignalR/SignalR/pull/3263
In practice, I don't think so. This is set in start(), and stop() will exit before this if the connection is in the disconnected state.

However, this applies equally to connection._.negotiateRequest, and we still check that it exists before trying to abort it in stop().

Perhaps, if something unexpected threw in start(), the connection could remain in the connecting state without setting initHandler or negotiateRequest, so I decided to check that initHandler is set just to be extra safe.