Added protocol version handling
Fixed issue with not reconnecting because of invalid protcol or bad auth
Merge remote-tracking branch 'origin/CPP-146' into CPP-147
Change RR LB to use Host ptr, use state in query plan

The idea was to make RR LBP more efficient and responsive by using
shared host pointers and taking state into account. Pure RR ended up
being a problem for small clusters with 'down' hosts in the list because
(1+m)/n requests would land on the next 'up' host (m down hosts in a
row, n nodes in cluster). This would not have been a problem in large
clusters, but is significant in small.

I then added some logic to randomize the next host tried, and account
for down hosts. This has the desired effects in small clusters, but may
become unweildy in large ones (many nodes down result in more
allocations per query).

Planning to go back to mutating the list on up/down, but guarding
against repetative scans at the policy level.