bluez5: Move ref / unref handsfree audio

This commit moves the ref / unref to hfp_hf_bluez5 to make
bluez5 more generic and reusable.
handsfree-audio: Check CVSD when registering agent

This patch makes CVSD codec mandatory when registering a Handsfree
Audio Agent.
bluez5: Add bt_register_profile_with_role

This function allows to specify which role is registering when the
profile does not have specific UUIDs for each role.
core: Add new Bluetooth header

This patch adds the Bluetooth utility funtions and socket type
declarations to a new header src/bluetooth.h, allowing to share it
between core, and plugins.
bluez5: Remove Bluetooth related utilities
hfp_hf_bluez5: Use new bluetooth.h header
hfp_hf_bluez5: Remove SCO handling

This patch moves the SCO socket handling from hfp_hf_bluez5 plugin.  It
will be instead handled by the handsfree-audio functionality. This is
the initial step to be able to support sending the file descriptor
through the Agent NewConnection method.
handsfree-audio: Add SCO handling

Unlike the previous implementation in the plugin, the SCO/SLC matching
is done based on the Audio Card objects.

Audio Cards are created when the RFCOMM fd descriptor is received, and
registered when the service level connetion is established.
handsfree-audio: Add NewConnection

This patch adds Agent NewConnection call. The card object path, the SCO
file descriptor, and the codec are being passed to the agent. This
initial version supports CVSD codec only.
handsfree-audio: Check local SCO address

This patch verifies if the local Bluetooth address of the incoming
connection also matches with one of available audio cards.
handsfree-audio: Reject SCO if Card is not ready

The Audio Card is being created when the NewConnection from BlueZ
Profile is received, and registered when the service level connection
negotiation finishes. This patch rejects SCO connection if the SCO
incoming connection arrives when the service level negotiation is
ongoing.
handsfree-audio: Reject SCO if agent is unavailable

This patch rejects the incoming SCO connection if there isn't a
Handsfree Audio Agent registered.
WIP: bluetooth: Move HFP version enum to bluetooth.h

Work in progress: maybe it is useless since GAtChat will be required
to trigger SCO connection for HFP 1.6
handsfree-audio: Move codecs to handsfree-audio.h

This patch moves the supported HFP codecs to handsfree-audio.h since it
will be shared between core, and plugins.
handsfree-audio: Add HFP_MAX_SUPPORTED_CODECS
handsfree-audio: Add function to get the codecs

This patch adds a new handsfree-audio public function to read the
available codecs registered by the agent.
hfpmodem: Send AT+BAC with the supported codecs

Before, the AT+BAC command was being sent with fixed information,
now we send the command (that inform the AG of the codecs supported by
the HF) with the codecs that come from the profile implementation.
hfpmodem: Add codec watcher register

This patch adds a function to monitor when the AG sends a new codec
before establishing the SCO connection.
hfpmodem: Add codec watcher unregister
hfp_hf_bluez5: Register codec watcher