Added ServiceProvider interface and a default implementation that
selects a random service from the available ones (preferring a service
from a local datacenter if possible).