Fix InternalError when RequestTimeout occurs

Swift3 should return RequestTimeout error response when
it occurs in backend swift.

Change-Id: I6c874c8a28ae0500d15b485b85b8ffcb0c95a818
Closes-Bug: #1400978
Add S3 ACL for Multipart Upload APIs

Add S3 ACL in the following API.
 Initiate Multipart Upload
 Upload Part
 Upload Part Copy
 Complete Multipart Upload
 Abort Multipart Upload
 List Parts
 List Multipart Uploads

Change-Id: Iff7d2d088e6c30bcd2a8132d09d64b5be9b64a89
Draft: Split Request class for s3acl

This is a draft version for spliting Request class.

We should keep clean controller classes to clarify
what swift3 have to handle. However acl handling for s3_acl
looks to be leaked into controller side.

If moving such routine into Request class, absolutely
Request class will become a complex large class.
That is why I try to split Request class and create a new class
called S3ACLRequest class. Basically it is a wrapper of original
Request class so that we can add acl handlers into anywhere
new S3ACLRequest without breaking original Request class.

This is still in WIP. As a next step, trying to move whole acl
handling code into S3ACLRequest.

Change-Id: I5a8e9a32cb47c135fb97d51ef53bbd98cabff67f
ACL Handlers

To make controller classes clean, this patch introduces new
mechanism called ACL Handlers. It is really useful for customizing
acl checking algorithms for each controller.

BaseAclHandler wraps basic Acl handling as same as current one.
(i.e. it will check acl from ACL_MAP by using HEAD)

In addition, we can make some extended custom classes with the same
name of the controllers. (e.g. BucketAclHandler is for BucketController)
They consist of method(s) for actual S3 method on controllers as follows.

e.g.:
class BucketAclHandler(BaseAclHandler):
   def PUT:
       << put acl handling algorithms here for PUT bucket >>

Change-Id: I155cd6387c81c03a2092ecd933f4769e5148c591
Merge "Fix InternalError when RequestTimeout occurs"