Major refactor on current code base

I am submitting this PR for review.

The changes are fairly wide in scope as there was no easy way to refactor the base class without a large number of changes.

The PR includes:

- Rework of the handler hierarchy to support a single base class and remove instanceof checks.
- A full implementation of Cancel behaviour with granular cancellation time (downloads are now chunked so can be cancelled before completion).
- Progress and retry notification
- Fixed some small stability issues (unhandled exception, connection issues on network switch).
- SyncHttpClient fixes to use any handler (all handlers can now be forced into sync mode)
- Cleanup of JsonHttpResponseHandler.java removing all superfluous helper methods

Also many classes were significantly simplified.

Ideally JsonHttpResponseHandler.java, TextHttpResponseHandler.java, BinaryHttpResponseHandler.java should be moved into the examples directory as these classes are supporting in role as opposed to core.