Added logic to wait on schema agreement

This include an update to
ControlConnection::determine_address_for_peer_host() to ignore
a node when the rpc_address is not present. I've also made this method
public and static so that it can be use by the schema agreement logic.

This also includes a good amount of cleanup and a big bug fix in
Connection that would have led to memory leaks when a connection ran
out of stream ids.

The way keyspaces are set has been updated and decoupled from
RequestHandler. The critical path no longer required memory allocation
for handling keyspaces.

I've decided to get rid of a lot of callback that were unecessarily
callbacks. This just made the code more confusing and only seem
decoupled.