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:

```