Adaptive upload throttling base on tar member cardinality

In order to prevent memory spikes when concurrently handling multiple
tar file uploads (with their affiliated tar-member metadata memory
bloat), limit uploads on two dimensions: number of concurrent uploads,
and number of outstanding members.

Take this opportunity to clean up and tailor-make the concurrency
control for uploads, which is now decoupled from the mechanism of the
uploader (as evidenced by the submitted tests).

Special care is exhibited such that exceptions are propagated to the
job-enqueuing caller so that failed uploads do not get incorrectly
marked as complete.
When GetBucketLocation fails, use S3-classic endpoint

From the comments:

	A 403 can be caused by IAM keys that do not permit
	GetBucketLocation.  To not change behavior for environments
	that do not have GetBucketLocation allowed, fall back to the
	default endpoint, preserving behavior for those using
	S3-Classic.