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.