Instead of holding on to the multi, we pass it through as context from the timer block.

The timer becomes the main driver of all action - and all shutdown work is performed in its cancel handler.

Any easy handles to be added or removed are placed on arrays and addition/removal itself is only processed in one place.
Fixed synchronisation of removals.
Fix analyser warnings / leaks.
Fixed crash cleaning up thrashInParallel test.
Re-enable multi logging.
Run tests as three suites instead of iterating each test three times.
Retain easy handles until we're done with them.
Added ability to tell if handle is managed by a multi - testing use only.
Fix cancel crash - multi needs to have started running before we cancel it.
Added more logging.
Don't add handle to pending removals list if we're not handling it.
Make cancel case a bit more realistic - wait until we've started downloading before cancelling.
Only test status code if the response supports it.
Latest curl libraries.
Updated version check to latest version of the libs.
Merge branch 'sam/async-multi-owned-by-timer' into sam/async

Conflicts:
	CURLHandleSource/CURLMulti.m