Connect handler

I'd like to have some way of knowing when a Cassandra cluster becomes completely unreachable. I think this would be when the Pool.Size() drops to zero. I don't believe there's currently an easy way to access this information at the time it changes, so I have a small patch that would add optional asyc callbacks to the cluster config that could be called when the adding or removing connections to the connection pool:

	config := gocql.NewCluster(“localhost")
	config.Keyspace = “foo"
	config.Consistency = gocql.Quorum

	config.DisconnectHandler = func(p gocql.ConnectionPool) {
		fmt.Printf(“Disconnect- pool size = %v\n”, p.Size())
	}

	config.ConnectHandler = func(p gocql.ConnectionPool) {
		fmt.Printf(“Connect- pool size = %v\n”, p.Size())
	}

I think this would allow interested consumers of the API any easy way to get access to the pool when the the size of it changes without having to resort to some sort of polling.
That's fine by me. At the moment my need is really only for the disconnects, though I could see a reason you'd like to be able to handle any sort of lifecycle event. This approach was based off of what's done in the NATS library: 

https://godoc.org/github.com/apcera/nats#Options

I assume you mean something like the ConnState call back from the net/http server:

https://godoc.org/net/http#Server

Honestly I think either API is understandable. The net/http approach does have the benefit that supporting a new state would mean no API changes, so there is definitely a win there on API stability.

I can work up something with this approach. It doesn't look like the library currently has any constants for connection state - unless I'm missing that. I'm assuming a Connected/Disconnected is enough to get the ball rolling?