Implements ThreadLocal[MessageDigest] as suggested in #8 discussion comments

Maybe 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 :)