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.
It wont fail to discover hosts, if all the hosts are currently down then fillPool() will try to connect to the seeds nodes at which point the discovery will kick in