Check object segment MD5s

Now if a client is downloading a large object and one of the segment
fetches gets bad data, we'll abort the request right away instead of
letting the client carry on. We do this by checking each segment's
body against the etag in the GET response's headers, like we tell
clients to do.

To make sure that the etag is the MD5, we add ?multipart-manifest=get
to all segment GET requests. That way, a segment won't be another
large object, because a large object's etag isn't its MD5. This does
mean that clients can't make, say, a DLO manifest that points to a
bunch of SLO manifests. However, that capability was only introduced
in Swift 1.13.0 (post-Havana); prior to that, clients couldn't mix
large-object types. I'm more than happy to trade that capability away
in exchange for data-integrity checks.

Change-Id: I98c78a291ee1a863a36d54a22867bd01c126644e
Update swift-get-nodes to use storage_directory util func

Change-Id: I074d6c5f62e5218427c72b3e11de40da4ecfc0ab
additional functional tests for account acls

Change-Id: I7d8a8e48066281707862cd07f6b5a012476e8f24
minor cleanups for swift-container-info

Change-Id: I4d0687f64524093e2ffaa4f8d31bcff70dca145e
Move like unit tests together; add comments

Some simple code movement to move the utils.ratelimit_sleep() unit
tests together so that they can be viewed all at once.

We also add some comments to document the behavior of
utils.ratelimit_sleep(); small modification to max_rate parameter
checking to match intended use.

Change-Id: I3b11acfb6634d16a4b3594dba8dbc7a2d3ee8d1a
Mock out time and sleep to avoid races

We mock out time.time(), time.sleep() and eventlet.sleep() so that we
avoid test problems caused by exceedingly long delays during the
execution of the test.

We also make sure to convert the units used in the tests to
milliseconds for a bit more clarity.

Closes bug: 1298154

Change-Id: I803d06cbf205a02a4f7bb1e0c467d276632cd6a3
Added swift-account-info tool.

This is a very simple swift tool to retrieve information
of an account that is located on the storage node.
One can call the tool with a given account db file
as it is stored on the storage node system.
It will then return several information about that account.

Change-Id: Ibfeee790adc000fc177b4b3c03d22ff785fda325
Merge "minor cleanups for swift-container-info"
Merge "Move like unit tests together; add comments"
Merge "Mock out time and sleep to avoid races"
Merge "Added swift-account-info tool."
Fixes SUPER important typo in CHANGELOG.

Change-Id: Id1ecc425cd9e32fef4d70e97d3a705a695eb73a2
Merge "Update swift-get-nodes to use storage_directory util func"
Merge "Fixes SUPER important typo in CHANGELOG."
Merge "Check object segment MD5s"
Merge "additional functional tests for account acls"