NEXUS-7521: simple Asset hashing service

based on Guava's thread-safe hashing functions

https://issues.sonatype.org/browse/NEXUS-7521
http://bamboo.s/browse/NX-OSSF345-1 :white_check_mark: 
Mainly ease-of-use for this particular use-case. I toyed with having interface+impls but then you need to remember what hint to use when injecting and if you forget the hint then you could end up with any one of the impls.

ie. compare:
```
@Inject @Named("md5") AssetHasher hasher;
// ... later on ...
byte[] hash = hasher.hash(asset);
```
with:
```
byte[] hash = AssetHasher.MD5.hash(asset);
```

Also in a way an enum is an interface+limited number of impls. Given that the hash algorithms we'll need are limited and the code is essentially a thin layer on top of the guava hash functions, making this an enum made sense when it came to actually using it in practice.