Fix use-after-free in CacheClient

Summary: It was being used like this:

 const auto& key = Controller::mapKeyAsString(Controller::mapKey(it))

Which would bind key to a reference to a temporary which was immediately
destroyed. Now it gets bound to an explicit temporary, which gets the
lifetime of the reference.

Reviewed By: @​zhuohuang

Differential Revision: D1746309

Signature: t1:1746309:1418850925:b21b002005dbdb685136a08b1466ff5e23b6c9a2