[cassandra] Reconnect on disconnect.

If, for some reason, all hosts become unavailable, we should
re-establish a connection using the original contact points.

In cases where a Cassandra node goes down or moves to a different host,
Presto just keeps throwing NoHostAvailableException until the end of
time.

I also refactored the handling of CassandraClientConfig so it wasn't as
messy.

@andykram @wmoss @mrdmnd @alexliu68 @jamesmay