Simplify `RedisCommandExecutor` and `RedisConnection`
Motivation:
RedisCommandExecutor
was a complex and "wordy" name that was not 100% clear as to how it relates to other types.
RedisConnection
also has not had a strong use case shown for it to exists as a separate protocol - using up a great name for the "out of the box" implementation.
Result:
RedisClient
instead of RedisCommandExecutor
is more clear as to what it is, in Redis terminology, a communication client.
RedisConnection
as a concrete class provides an identifiable basic block for making connections to Redis.
RedisConnection
also saw some fixes to close()
while having some names and comment blocks tweaked for updated naming.