monitor: Add an option to dump SCO traffic
doc: Fix optional properties not marked as such

Commit 826023de56896e83f35ae69a73d6a120a2f5b11e made some of the
device's properties optional but the documentation was not updated
accordingly. More specifically, the properties 'Name' and 'UUIDs' won't
be present if the information is not available.
device: Fix returned error code

The second 'err' shadows the main local variable which is being used to
as return value of the function. Otherwise -ENOENT was always returned
in case of error.
control: Simplify UUID handling during probe

There is actually one single UUID which can be received during probe, so
simplify the code accordingly.
input: Simplify code since UUID is known

The UUID in this code path is fixed so trivially use it instead of
using the provided probe parameter.
profile: Remove UUID list from probe function

Each instance of btd_profile is associated to one single remote UUID
and therefore the list provided by the callback is redundant and can be
removed.
network: Fail if multiple profile instances

Considerable parts codebase are assuming that there is one single
instance of each UUID and therefore return an error during probe instead
of silently ignoring duplicated entries.
input: Fix ignored profile shutdown

Unprobing the profile should never fail which means neither should
input_device_unregister(). This requires shutting everything down
regardless of possible pending connection requests.
input: Move timeout setting to device.c

The timeout setting is global across devices and it's actually only used
inside device.c. Therefore, simplify the code by just passing it once.
input: Remove unused UUID field

Trivially remove the field because it's actually not being used.
input: Bypass manager during probe/remove

Use the internal device API to provide the btd_profile callback
functions, without boilerplate code in manager.c.
input: Remove useless forward declarations
network: Bypass manager during probe/remove

Use the internal device API to provide the btd_profile callback
functions, without boilerplate code in manager.c.
core: Add btd_service to represent device services

Add a new object to centralize all data corresponding to a service
provided by a remote device, coupling a pair of btd_profile and
btd_device pointers.
device: Use btd_service to represent profiles

Maintain a list of btd_service pointers instead of btd_profile pointers,
for services that have been probed for this device.

This list will not only reference count the btd_service instances but
also "own" them, in the sense of destroying them (make them completely
unavailable) when the service is removed from the list. This is needed
because the btd_service does not reference count the btd_device
instance.
core: Add probe API to btd_service

Make use of the btd_profile callbacks directly within service.c instead
of doing it inside device.c.
core: Add connect/disconnect API to btd_service

Make use of the btd_profile connect/disconnect callbacks directly within
service.c instead of doing it inside device.c.
core: Add a state enum to btd_service

Add a state to btd_service in order to distinguish which operations are
allowed in a certain point in time.
device: Replace connected_profiles with btd_service

The service state can provide enough information not to maintain such
a connected_profiles list. Therefore, avoid duplicated information and
remove the list.
device: Find services instead of profiles

Trivially replace the former find_connectable_profile() with
find_connectable_service().