cluster: introduce `distribute` option

`distribute` is a user-specified callback for asynchronous balancing of
incoming connections to cluster workers.

fix #6001

/cc @bnoordhuis @isaacs @kaero