JCLOUDS-457: Added TreeHash util class and its test.

The TreeHash class stores two HashCodes, the linear and the
tree HashCode. The TreeHash class also has an static inner class
named Hasher, which allows us to calculate the hashes.

Both Hashes (tree and linear) are needed for the upload archive
and the multipart upload operations. When completing a multipart
upload operation we also need to calculate the tree hash of the
individual part's hashes.
Avoid buffering entire input when hashing

Also ensure that we close the InputStream.
JCLOUDS-457: Changed the ArrayLists in TreeHash util to ImmutableLists.
JCLOUDS-457: Added deleteArchive and uploadArchive operations.

Now the Glacier client supports upload and delete archive
operations.

An static TestUtils class has been made for the archive operations
tests. This class allows us to build payloads and build ByteSources.
JCLOUDS-457: Part of the code has been cleaned up

On the last commit we added TestUtils class. On this commit
the VaultNameValidator and the ThreeHashTest tests make use
of it.

GlacierClientMockTest was not using GlacierHeaders references.
This commit fixes this problem too.

In addition, the AWSRequestSignerV4, the TreeHash and the
VaultNameValidator classes are now final.
Store hashes as HashCode for type-safety
JCLOUDS-457: Clean up for GlacierClientMockTest.

GlacierClientMockTest was growing uncontrollably. This commit
is an attempt to fix this problem.

The first measure taken moves the duplicated strings to constants
and the JSON response bodies to resource files. In addition, some
repeated code was moved to static classes, where they can be reused.

We also use @BeforeTest and @AfterTest to make instances of the
MockWebServer and shut them down for each test.
Use Square's mockwebserver
JCLOUDS-457: Added initiateMultipartUpload and uploadPart operations.

Now the Glacier client supports initiateMultipartUpload and
uploadPart operations.