Created the Connection Pool interface and converted the existing ConnectionPool Logic

Hey Guys,

This is an attempt to abstract the connection pool code so that it is not part of the core of gocql. This allows use to have a gocql-contrib library that can house a collection of connection pool types (other types as well as they become abstracted).

I am going to add examples into the documentation of the package so users can have a definitive explanation.

But in brief a connection pool type needs to:
* Be a Struct
* Implement the ConnectionPool Interface
* Implement the NewPoolFunc

A good starting point for a user to create their own connectionPool type is to take the SimplePool Structure and all its methods as a base and start removing and adding code as needed.