Correctly set final exception when query fails on all hosts

Before this change, the Event that notifies listeners
that the operation has completed was not being triggered.
Define ResponseFuture.__repr__()
Prepare statements in chunks of 10

This helps to finish preparing all statements more quickly
when down nodes come back up.
Stop preparation of statements after one failure
Don't callback when reconnector is cancelled
Better cleanup of failed node up handling

When a node comes back up, we try to create a new connection
pool for it.  If that process fails, listeners and the
control connection need to be notified.  Prior to this change,
they would not, so the pool could remain in a shutdown state
and the control connection could be unaware that its connection
had failed.