CassandraConnector shares core driver Session objects. Previously it sha...

...red only Cluster objects and a separate Session was open per every Spark task. This had a significant performance overhead in terms of CPU, networking and memory use, because every Session object manages an internal pool of connections to all cluster nodes. Fixes #41 and #53.
Actually, it would be not that simple to implement, because we'd have to get access to a shared Session from the Cluster object, which means recreating its CassandraConnectionConfig to get Session from the cache. It is not worth added complexity. I put a comment on withClusterDo, so people are aware that they should not use it for obtaining sessions, because sessions are heavy.