doc/gatt-api: New API properties and methods for the GATT D-Bus API.

This patch introduces the following new properties to the GattService1
interface:

  Device: A remote-service-only property that contains the D-Bus object
  path of the associated device.

  Primary: Reflects whether or not a services is primary or secondary.

This patch also introduces new methods to GattCharacteristic1 and
GattDescriptor1 for reading and writing the corresponding attribute
values and a new signal for being notified of received notifications and
indications.

The "Value" D-Bus property is removed from both interfaces
and replaced with asynchronous ReadValue and WriteValue functions. This
is due to the fact that DBus.Properties.Get is synchronous and without
an asynchronous way of issuing a GATT value read request, there are
cases where a single read and cache based approach becomes limiting
(e.g. when a characteristic allows reads but no notifications) and
relying on the PropertyChanged signal to retrieve the value of a read
request asynchonously as well as to signal notifications/indications
makes for a vague API.
src/gatt-client: Introduce btd_gatt_client.

This patch introduces struct btd_gatt_client, which intends to
encapsulate the GATT database of a btd_device. btd_gatt_client tracks
attributes of a remote device and exposes them to external applications
via the D-Bus API defined in doc/gatt.

The ultimate goal is to have a single instance of btd_gatt_client for
each btd_device and allow profiles to access attributes through it,
instead of using attio. This is the first of several stages in removing
GAttrib from bluetoothd.
src/gatt-client: Create GattService1 objects for discovered services.

This patch makes btd_gatt_client perform a primary service discovery and
expose GattService1 objects for each one that is discovered.
src/gatt-client: Added GattCharacteristic1 objects.

This patch adds characteristic discovery and creates and exposes
objects with the GattCharacteristic1 interface for each
characteristic discovered.
src/gatt-client: Implemented the GattCharacteristic1 "Flags" property.

This patch exposes characteristic properties under the "Flags" D-Bus
property of GattCharacteristic1. Properties provided by the
Characteristic Extended Properties descriptor are not yet handled.
src/gatt-client: Implement GattCharacteristic1.ReadValue.

This patch implements the ReadValue method of the
org.bluez.GattCharacteristic1 interface.
src/gatt-client: Implement GattCharacteristic1.WriteValue

This patch implements the WriteValue method of the
org.bluez.GattCharacteristic1 interface.
src/gatt-client: Added GattDescriptor1 objects.

This patch exposes objects with interface GattDescriptor1 for discovered
characteristic descriptors.
src/gatt-client: Implement the GattCharacteristic1.ValueUpdated signal.

This patch implements the ValueUpdated signal for characteristics, so
that a signal is sent for all notifications and indications received for
a characteristic. Notifications and/or indications get enabled
automatically based on the presence of the "notify" and "indicate"
properties and the "Client Characteristic Configuration" descriptor of a
characteristic.
src/gatt-client: Implement GattDescriptor1.ReadValue method.

This patch implements the ReadValue method of the GattDescriptor1
interface.
src/gatt-client: Implement GattDescriptor1.WriteValue.

This patch implements the WriteValue method of the GattDescriptor1
interface.
src/gatt-client: Handle Service Changed events.

This patch adds handling for indications from the Service Changed
characteristic. For now, the code rediscovers all attributes if the
device that send the indications was bonded with.
src/gatt-client: Add Characteristic Extended Properties to "Flags".

This patch adds code that includes the values read from the Characteristic
Extended Properties descriptor in the "Flags" property GattCharacteristic1.
CHROMIUM: Make GATT D-Bus client API non-experimental.

This patch marks the methods and properties exposed by the GATT client
API as non-experimental.
CHROMIUM: Blacklist the HID service.

The HID service generates a lot of noise on D-Bus due to its real time
nature and since we currently don't have an API to explicitly enable or
disable notifications, all paired HoG devices will flood D-Bus with
unwanted signals. Until we have that API, we don't expose the HID GATT
service on D-Bus.

BUG=chromium:386423
TEST=Tested on a HP BLE Mouse.
Revert "plugins/sixaxis: Add a set_leds_sysfs() function"

This reverts commit fbe7d5226f5ff4287f065b7b3f45b6669f22f140.
src/gatt-client: Add GattCharacteristic1 StartNotify and StopNotify methods.

This patch adds the StartNotify and StopNotify methods to
GattCharacteristic1 to enable characteristic handle value notifications
and indications on characteristics that support either. gatt-client
stores the sender of each StartNotify call so that a notify session is
maintained on a per D-Bus connection basis.
src/gatt-client: Implement "Characteristics" and "Descriptors" properties.

This patch implements the org.bluez.GattCharacteristic1.Descriptors and
org.bluez.GattService1.Characteristics properties. These properties return an
array of object paths that belong to the characteristics of a service and the
descriptors of a characteristic. The properties initially return an empty array
but get updated once after the corresponding characteristic or descriptor
discovery procedure has ended.

This is used to notify the client application that all characteristics and
descriptors of a service have been discovered and the service is ready to
interact with.