Add periodic node discovery with optional filters

Add support for periodic node discovery via system.peers.

This lays the foundation for more feature full connection pools, such as token aware host selection.
How?
All the host information is there. pool.fillPool will create connections for hosts that have less than the configured amount per host. removeHostLocked is only called in SetHosts therefore if SetHosts is only called when valid topology information has been retrieved than c.hosts should still be the same and the pool will fill again in the event the client application losses connectivity with cluster.

This was the behaviour of the SimplePool before and from reviewing the changes it still seems to be there.