DC-Aware Load Balancing Policy
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.
Prevent double erasure of host during Session::purge_hosts
Fix typos around event response and REMOVED_NODE
Avoid on_add for initial connect since we just init()'d
No down tracking per query. Make RR block mult on_down
Merge pull request #66 from datastax/CPP-147

CPP-147 - DC-aware LBP