Add KeyFix backend to fix keys with invalid characters
Add KeyFix backend to fix keys with invalid characters

When Memcache doesn't like a key, `->set*()` returns `false`. Since this
is (basically) a silent failure, it's tricky to catch.

Danny and I discussed reporting an exception in this case, but then
decided that, if we did find an offender in our code, we'd just hash
they key. So, instead of making a backend that throws exceptions on bad
keys, this is a backend that hashes the bad keys.

This should be used _instead_ of the existing KeyShorten backend, not in
conjunction with it. This backend also handles shortening. The reason
for that is that if we're going to be looping through an array of keys
and mutating them in this backend, we don't want to do it again in
KeyShorten.

Also, KeyShorten would keep the first part of the key:
 BEFORE: long-key-long-key-long-key
 AFTER:  long-key-sd90fus09jf2390fj02f

KeyFix doesn't do that.

iFixit/Matryoshka