Manual statement preparation

(Status WIP)

This patch adds 3 extra calls to the API:

```
func (s *Session) Prepare(stmt string) *Query
func (q *Query) Bind(values ...interface{}) *Query
func (q *Query) Info() *QueryInfo
```

The motivation is to expose column meta data for bind query variables to the application. By exposing this information, a higher level API client can leverage routines to auto-bind application level structs to queries without having to implement any binding in the core driver.

Right now there are a few implementation issues with this patch, hence the WIP status:

* The test `TestReprepareStatement` is broken:

```
=== RUN TestReprepareStatement
--- FAIL: TestReprepareStatement (0.11 seconds)
	cassandra_test.go:640: Failed to execute query for reprepare statement: Prepared query with ID 666f6f626172 not found (either the query was not prepared on this host (maybe the host has been restarted?) or you have prepared too many queries and it has been evicted from the internal cache)
```

* What if the query when being executed goes to a different host than it was prepared on?