Fix lua script cache.

Previously, it returned a cached LuaScript object that was tied to a particular
redis connection object, but it could be a different redis connection object
from the one the client is using. That's because we were caching them based
on the redis connection URL, since we don't want to reload the scripts into
the same server multiple times.

However, that caused subtle problems for watch/multi/exec blocks: calling a
script could, in some situations, no longer be a no-op for an aborted multi
block (e.g. due to a watched key changing). That's because the semantics of
a multi block are tied to one redis connection, but the script could be executed
by a different redis connection if the cached LuaScript object was using
a different redis connection.

The solution here is to change the cache so that it caches the SHAs and always constructs a new LuaScript object as needed, so that the redis connection
is always the correct one.