Add handler for invoking node on_connect/on_disconnect functions

The Discovery.NodeConnector.Handler behaviour can be implemented and passed as an argument to Discovery.Poller.start_link/2. Everytime a node is connected to, reconnected to, or disconnected from the functions each handler expose will be run.

/cc @gamepoet 
This is relatively the same function with one exception: We don't sit in a retry loop when we're connecting to ourselves.