RedisNode can now be constructed using an empty hostname. This can happen when a node is in failover state. RedisNode exposes hasValidHost() to check whether the node has a valid hostname. Also, introduce copy constructor to avoid mutations caused by the builder. Closes #1985 Original Pull Request: #1991