fix fetch_multi() when normalization is more than adding prefixes
fix fetch_multi() when normalization is more than adding prefixes

Combust::Cache::Memcached::fetch_multi() works so that
input cache ids

    $cache->fetch_multi(@ids)

are normalized before going to the raw Memcached interface,
which returns a cache keyed by the normalized keys.

To get back to the input cache keys, the code took care
of removing the prefixes added (basically namespace and type,
if those were set). However that it is not enough in at least
two cases:

(1) too long keys are transformed into md5-xxx...xx keys

(2) cache keys with spaces have spaces replaced by '+'

So we had bug in fetch_multi() that prevented to get us
back a corresponding entry for the input cache keys in such
circumstances, because the pairs would be there but
under a key that the client code would not understand.

This change fixes that by constructing a map from
normalized keys to input keys (it warns when two or more
keys are coalesced to one, for example, "San Francisco, CA"
and "San+Francisco,+CA") and uses that when building the
output map. So this should get rid of all transformations
done by the key normalization, including prepending prefixes,
md5 coding and space replacements.

dagolden/perlweb,bjakubski/perlweb,autarch/perlweb,ajolma/perlweb,dagolden/perlweb,ajolma/perlweb,ajolma/perlweb,bjakubski/perlweb,briandfoy/perlweb,alcy/perlweb,PeterMartini/perlweb,PeterMartini/perlweb,alcy/perlweb,alcy/perlweb,Abigail/perlweb,Abigail/perlweb,briandfoy/perlweb,autarch/perlweb,Abigail/perlweb,bjakubski/perlweb,PeterMartini/perlweb,briandfoy/perlweb,autarch/perlweb,dagolden/perlweb