Added tracking for the negotiate request so calling stop properly aborts the request.

- Without aborting the negotiate request starting and stopping in quick succession can cause multiple active ajax requests attempting to connect.

#2160
Added test to verify starting and stopping doesn't result in multiple client side connections.

- Also had to fix up some past tests that were not returning their ajax handles in replaced ajax functions.

#2160
Added test to verify hub event handlers are only triggered once per binding.

- This is a multi-purpose test to verify 3 bugs.

#2187
#2160
#2190
Addressed code review comments