Feature/memcached key hashing

Provides a simple alternative way of making sure keys are within Memcached spec and subsequently addresses #7
Initialising a MessageDigest has a trivial but non-zero cost, so there is scope for optimisation here using a ThreadLocal. But that's probably premature optimisation at this point. This is fine for now.