Implement client pools

Client pools handle selecting a client from a list of
multiple clients based on a selection policy.

Signed-off-by: Peter Foldes <peter.foldes@turn.com>
`SelectionPolicy` is very generic name but the interface is specific to return a `Client` – how about `ClientSelectionPolicy` or `ClientSelector` (slight preference for the latter)?