shared/gatt-client: Added initial skeleton and simple functions.

This patch introduces shared/gatt-client, which provides a central/client side
implementation of the Generic Attribute Profile. An instance of bt_gatt_client
will provide a central database of all GATT services, characteristics, and
descriptors that have been discovered on a peripheral and will provide API
functions to obtain information about discovered attributes, registering
handlers for "Service Changed" indications, as well as providing
reference-counted access to "Client Characteristic Configuration" descriptors.
shared/att: Support multiple disconnect handlers.

This patch adds support for registering multiple disconnect handlers with an
instance of struct bt_att. Unregistering is achieved via a new function AND
through bt_att_unregister_all and all disconnect callbacks get automatically
unregistered after a single disconnect event.
shared/att: Add BT_ATT_DEFAULT_LE_MTU macro.

Moved the ATT_DEFAULT_LE_MTU to att-types.h to make it public.
shared/gatt-helpers: Fixed typo in callback args.

Fixed a small typo in one of the callback arguments.
shared/gatt-client: Add bt_gatt_client_set_debug.

Added the bt_gatt_client_set_debug function, which sets up a callback to be used
internally by util_debug.
shared/gatt-client: Implement initial service discovery.

This code implements the following portion of attribute discovery:

  - Initial MTU exchange.
  - Primary service discovery.

Discovery results aren't stored yet.
shared/gatt-client: Add service iterator functions.

This patch introduces high-level structures and functions for iterating through,
and storing, data about the discovered services.
shared/gatt-client: Implement characteristic discovery.

This patch implements characteristic discovery as part of the client
initialization flow. The characteristics of each service are discovered in
order.
shared/gatt-client: Implement descriptor discovery.

This patch implements characteristic descriptor discovery as part of the client
initialization flow.
tools/btgatt-client: Introduce tools/btgatt-client

This is the initial commit for tools/btgatt-client.c, a command line tool to
interactively test and debug shared/gatt-client.
tools/btgatt-client: Added L2CAP LE ATT connection.

This patch adds support for connection establishment with different security
levels. Currently, only LE connections are supported.
tools/btgatt-client: Integrate bt_att and bt_gatt_client.

This patch adds the initial set up of a bt_att and bt_gatt_client around the
connection socket.
tools/btgatt-client: Add command parsing.

Added basic support for command parsing, including the "help" command. Also
added a call to bt_gatt_client_set_debug.
tools/btgatt-client: Added the "initialize" command.

Added the "initialize" command which triggers GATT service, characteristic, and
descriptor discovery procedures and populates the bt_gatt_client instance. Also
added some (shitty) coloring for verbose output.
tools/btgatt-client: Add "services" command.

Added the "services" command, which enumerates all discovered services,
characteristics, and descriptors.