Implements ThreadLocal[MessageDigest]

As suggested in PR #8 discussion comments.

May be premature optimisation, but it's not a lot more code/work and it's only in one place. Makes using HashingKeySanitizer a little bit faster :)
I didn't notice this in your previous PR, but `getBytes("UTF-8")` is preferred over `getBytes()`. With the current impl the cache key is dependent on the system's default charset.