Added device discovery via Slarti.

This CL adds the ability to discover devices using Slartibartbast as
an alternative to Weave.  Starting a mirroring session is supported
but not tested.

To facilitate migration from Weave to Slarti, discovery via Weave is
bypassed if any devices are discovered using Slarti.  This is done
based on the assumption that once a given user has a device registered
in Slarti, any device registrations still in Weave are obsolete.

Missing from this CL:

- Unit tests for new code.

- Ability to create a flinging (i.e. Presentation API) session.

As well as adding new functionality, this CL make a few changes to
existing features:

- Classes derived from mr.cloud.slarti.Api have been renamed so their
  names end in "Service", to match the convention used in the rest of
  MR.

- Renamed mr.cloud.messaging.MessageProcessor to MessageDispatcher.

- CloudSink objects have a single channel type rather than an array of
  channel types.  This is a minor change, because previously the channel
  type array always had exactly one element.

- Mirror services are no longer responsible for passing a channel type
  in calls to the cloud MRP.  Instead, the cloud MRP maintains a
  mapping from route IDs to channel types.

PiperOrigin-RevId: 186830023
4 files changed