Add signature

Allows users to easily mix in additional data into cache keys.

This would fix #178, and would be a step in the right direction for #174 and #172
That's what you want, but what about http://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html#reset()?
I see you put `signature.updateDiskCacheKey(messageDigest)` as the first in `EngineKey` ?intentionally? so that any misbehaving `reset()` calls are still appended with the rest of the key.