Changed the reconnection logic to reduce the flood of reconnects. Also fixed incorrect keyspace on CreateSession.
Added code to debounce requests to fillPool when calls are in a tight
loop. Cleaned up code that was commented out in the first commit.
Adjusted error message in TestInvalidKeypsace test case.
(cleanup) move shouldPrepare func to being a Query type method
un exporting the shouldQuery method
fixed test to use un exported shouldPrepare
Merge pull request #150 from harpreet-sawhney/remove_should_prepare

(cleanup) move shouldPrepare func to being a Query type method
Merge pull request #149 from phillipCouto/cleaner_reconnect

Changed the reconnection logic to reduce the flood of reconnects.
provide some details when encountering a protocol error
Merge pull request #153 from opsmatic/protocolerrordetails

provide some details when encountering a protocol error
Use better error messages instead of ErrUnavailable

When a session is closed it should not be possible to execute queries,
the error message for this is distinct to a live session which has
not connections.

If a live session has no available connections then indicate that
instead of the generic ErrUnavailable.
Use defer to unlock in session.go
Update test
Remove redundant iter nil check
Remove check for available streams

A connection should be pickable even if no streams are currently
available. In this case, when executing the query, the connection will
block reading from the streams channel [see func (c *Conn) exec(...)]
until one is available.

This avoids 'unavailable' errors when there are more than
numConns*numStreams queries pending.
Merge pull request #158 from miguelvps/stream_unavailable

Remove check for available streams
AUTHORS: added Miguel Serrano
Merge pull request #143 from Zariel/better-unavailable-errors

Use better error messages instead of ErrUnavailable