cleanup: updated RepoChecksumPolicyTest to use hamcrest

Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
NEXUS-5418 store sha1/md5 checksums in item attributes

Changed maven2 proxy repositories to store item SHA1 and MD5 hashes
provided by remote repositories as item attributes, not as .sha1
and .md5 items in local storage. This solves common race condition
when multiple threads request the same artifacts at about the same
time and item and its corresponding hashes need to be treated
atomically and locked for entire duration of the operation requesting
the item.

.sha1/.md5 items are not stored/maintained in the local any more but
these files can be generated easily either from attributes or from
item contents if needed.

There is no automatic retry for RemoteStorageException during
.sha1/.md5 remote retrieve. Either expire the artifact or request the
hash asExpired to retry.

It is also not possible to delete .sha1/.md5 items and, generally,
expected/desired behaviour is not clear.

Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
Made RepositoryItemUid #getLock and #getAttributeLock the same

Both DefaultRepositoryItemUid #getLock and #getAttributeLock lazy
initialized and returned the same DefaultRepositoryItemUid.lock
member. This means that both methods returned the same value for
any given itemUid instance. Most likely this was always item lock,
but the code is too convoluted to tell if any code paths used
attribute lock.

To guarantee consistent use of locks, made both #getLock and
and #getAttributeLock always return the same item lock.

Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
Merge pull request #771 from sonatype/23x_NEXUS-5418_storeChecksumInItemAttributes

23x nexus 5418 store checksum in item attributes