shared/gatt: Add included service functionality

It will add included service to service attribute list. It will first
look for included service and then create attribute. In case of error
or if there is no free handle, 0 will be returned.
shared/gatt: Add method to set service active

This function will set active flag in database. Only active
services can be read by client from database. This falg will be
checked when remote will read attributes from this database.
Non-active services won't be exposed.
shared/gatt: Fix uuid_to_le function

32-bit UUIDs must be converted to 128-bit before being transmitted.
shared/gatt: Fix undefined behaviour in memcpy

Check len before copying data.
shared/gatt: Allocate separate memory for attribute value

This is not a packed structure mapping memory where using zero sized
array would be useful. Simply use pointer and allocate memory for
value.
android/gatt: Refactor client connection handling

Multiple, connection specific device lists were replaced with one,
while devices store their connection state instead. Client list in each
device were replaced with single, global list, storing (connection_id,
client*, device*) tuples. This seams to be more natural and easier to
perform actions which are mostly triggered by specific clients on
specific device or connection.

Connection id previously assigned to device now properly identifies
client<->device and not the physical adapter<->device connection.
android/bluetooth: Add function for getting device Android type

This will be used by GATT HAL.
android/gatt: Implement get device type command
android/gatt: Send app uuid also for failure response

Framework should know which request failed.
android/gatt: Use common struct for client and server applications

This will allow to handle client and server connection using the same
connection logic.
android/gatt: Store client and server apps on a single list

This will simplify and reduce code amount for handling client and server
app as it will use common code.
android/gatt: Rename connection list

This list will be used for both, client and server apps connections.
android/gatt: Rename connection struct

This represents client or server application connection and not the io
connection thus should be named properly.
android/gatt: Extract common code from client_connect

Code extracted from client connect handler will be reused by server
connect handler
android/gatt: Handle Server apps connections

This handles server connections.
android/README: Update GATT HAL implementation status
agent: Allow to stack default agents

There is no API for notifying agent that it is no longer default one.
This can lead to situation when ie. console agent (bluetoothctl) is
set as default leaving UI agent unfunctional after bluetoothctl exited.

This patch adds stacking of default agents in case more then one agent
requested being default.
client: Fix not releasing agent if bluetoothd exit without calling Release

If AgentManager1 disappear the agent should auto release itself
otherwise next time AgentManager1 appears bluetoothctl wont register
the agent again.
android: Make multi-line comments style consistent

Use common style for multi-line comments consistent with rest of
codebase.
android/gatt: Use common code for server and client register

As clients and servers are stored on a single list we can use common
code in both of register handlers.

We always confirm registration handling with HAL_STATUS_SUCCESS,
regardless of registration result, which is reported by event
notification containing GATT_SUCCESS or GATT_FAILURE status.