Might as well annotate methods which can't take nil
Exception handler to try and track down assertion failures
Exit processing loop in the even of a cancellation
Clear out multi handle as part of dealloc cleanup
Clean up queue during dealloc too
Nothing for shutdown to do when not use multi-socket backend
Ignore multiple cleanups
Serialise access to multi during cleanup too
Run cancellation test like any other

CURLTransfer notifies its delegate when cancelled, much like
NSURLSessionTask