Be sure to fully consume HTTP entity so that connection is released

We need to fully consume (or rather finalise reading of) entity so that connection can be given back to connection pool.

Otherwise, connections may be help up, and subsequent requests fail with `ConnectionPoolTimeoutException`. Noticed such behaviour when requests failed (with `HTTP 404` in my case).

Following answer suggested this approach:
http://stackoverflow.com/a/4621737/74174
Add lots of verbose debug logging, toggled via AsyncHttpClient#setDebug()
When request is cancelled, let handler know this
Don't use WeakReference for Handler responsible for callbacks

.. because we may loose this WeakReference and callbacks won't be triggered then.

Previous implementation used WeakReference to avoid memory leaks, but we'll have to live with these leaks if they really occur - reliable callback triggering is more important.
Report response progress only if we know its size, else consume at once
Use obtain instead of new on Message creation to improve memory efficiency

Seen in https://github.com/loopj/android-async-http/commit/6d10dd3465180fd848ac305be9fa6f06bf2e0ba9
Update build target to SDK level 17