MultiEndpoint holds a list of endpoints, tracks their availability and defines the current
endpoint. An endpoint has a priority defined by its position in the list (first item has top
priority). MultiEndpoint returns top priority endpoint that is available as current. If no
endpoint is available, MultiEndpoint returns the top priority endpoint.