Make abort fully synchronous so that timing more accurate.
- Gracefully wait on the connection to end before aborting the request.
Set the reset events on error calling /abort.
Fixed some tests issues.
- Use unique transports per connection since they're disposed now.
- Append custom url to abort request.
- Changed abort timeout to 5 seconds.
Use a regular tcs for the disconnect tcs so that it runs synchronously.
Always abort the request instead of the response to kill connections.
Removed SafeCancellationToken from client.