Fix connection leak when a request was cancelled
Fix NPE bug that could occur when cancelling a request

Code assumed all requests to already have a connection assigned when they were cancelled, which is not necessarily true as they may be stalled on the queue waiting for their execution turn.
Add check to avoid writing an empty buffer to the target buffer
Improve readability and fix edge-case NPE
Add extra conditions to allow sendData() to be called
Add battery of specs for DefaultConnection
Fix bugs on RequestFuture's spec
Finish coverage on DefaultConnection's spec
Correct documentation on Connection
Cover edge case bug where connection listener would not get notified

If a network write raised an exception, the request would be reported as failed but the connection listener would not get notified, which could lead to the request queue stalling.
Correct timeouts on DefaultHttpClient integration test
Cosmetic changes for enhanced readability
Improve readability and DRY termination code
Modernize and fix known bugs with pipelining connection
Update default http client spec to increase coverage of edge case
DRY up connection tests via abstract class that contains common tests

AbstractConnectionTest contains common behavior between both connection implementations.
Update README.md