Use a FreeListRef for RedisReplyImpl so that copying replies doesn't crash.
Instead of a separate RedisReplyImpl, store the state in RedisConnection.

This removes an additional allocation per reply and enhances robustness because it better catches any overlapped replies that might happen.