Add an upload progress listener

This relates to gh-26.

It sounds odd, but I couldn't work out how to add a download progress listener. The FutureCallback interface doesn't expose any way to get at the progress, but it might be possible to do by implementing HttpAsyncRequestProducer and HttpAsyncResponseConsumer and passing them into CloseableHttpAsyncClient's method execute(HttpAsyncRequestProducer, HttpAsyncResponseConsumer<T>, FutureCallback<T> callback)

Existing uses of Callback will need to implement the new method or extend AbstractCallback instead. Is that acceptable? It makes the interface to the library technically non-backwards-compatible.