Add shutdown method to HttpClient to explicitly release resources

Currently there is no way to tell the HttpClient to free up used resources in
case it is no longer used (and thus destroyed). This leads to the situation
that among other things the AsynchronousValidator is not shutting down the
executor service properly and thus resulting in a resource leak.

Conflicts:

	httpclient/src/main/java/org/apache/http/impl/client/AbstractBasicHttpClient.java
	httpclient/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java
	httpclient/src/main/java/org/apache/http/impl/client/InternalHttpClient.java
Add unsuccessful revalidation error count and a builder for HttpCacheEntry

* Builder makes it easier to construct this complex object
* Error count represents the number of unsuccessful revalidation attempts in a row
Extract algorithm to schedule asynchronous validation requests from AsynchronousValidator

 * SchedulingStrategy interface as abstraction: responsible for scheduling validation request
 * ImmediateSchedulingStrategy as default implementation (refactored from AsynchronousValidator)
 * CachingHttpClient supports changing the strategy via setter

Conflicts:

	httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java
Add re-validation scheduling strategy based on an exponential back-off algorithm
Typo
Add a failure cache to keep track of failing requests

Implemented as a bound map which is optimized for fast retrieval but slow insert.
Use the failure cache track of failing re-validation jobs.

Instead of storing the error count in the HttpCacheEntry, now the failure cache
is used. This avoids to hook into the complicated CachingHttpClient workflow
which takes different paths depending on the response and the set header flags.
Also we avoid the problem that the HttpCacheEntry might be flushed under
certain circumstances and thus the error code is lost.

Conflicts:

	httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java
	httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java
Revert "Add unsuccessful revalidation error count and a builder for HttpCacheEntry"

This reverts commit 558a89eb720bfe08d3fd947ba61ee607596cb5f8.
Typo
Typo
Fix race condition leading to removal of the wrong cache entry
Replace unbounded while loop by bounded for loop to avoid resource starvation
Improve stale check by also looking at the header value

Conflicts:

	httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java
Remove invalid comment
Update distributionManagement to refer to Atlassian's 3rd party repository
Specify Maven 2.1.0 compatible versions of the site and the assembly plugin