bluetooth: Add backend infrastructure with core->backend reporting

Components other than BlueZ can also implement Bluetooth profiles and
some infrastructure is required to keep the codebase cleanly split.
bluetooth: Add basic backend->core notifications

Make a clear split to define an API implementing transport operations,
and how these backends should report the events to the Bluetooth core.
bluetooth: Add backend->core notification of new transports

Backends are responsible for the notification of new transports, which
is backend-dependant. The core still holds ownership of the transport
objects.
bluetooth: Add embedded BlueZ backend inside bluetooth-util

BlueZ 5 supports external profiles, meaning that certain Bluetooth
profiles (e.g. HFP/HSP) are completely handled outside BlueZ.

However, some other profiles (i.e. A2DP) are still implemented inside
BlueZ, so let's keep a BlueZ-specific backend inside bluetooth-util.

Furthermore, in the case of BlueZ 4, this embedded backend also supports
HSP/HFP.
bluetooth: Avoid using transport path in traces

Replace the transport path with the device path and the profile id,
which should be more relevant and also backend-agnostic.
bluetooth: Split BlueZ backend data to separate structs

bluetooth-util internally implements a backend for BlueZ Media API
but it's nevertheless convenient to have the backend-specific data split
into separated data structures.
bluetooth: Add device removed callback to backend

This callback notifies the backend that the core needs to destroy the
transport.
bluetooth: Add transport acquire/release callbacks to backend

Transport acquisition and release are backend-dependant so add the
necessary callbacks to struct pa_bluetooth_backend.
bluetooth: Add microphone gain callback to backend
bluetooth: Add speaker gain callback to backend
bluetooth: Use bluez_backend_private for endpoint userdata

The endpoint is backend-specific and therefore it's logically more
appropriate to use the bluez_backend_private struct as the userdata
pointer in all endpoint callbacks.