AVCTP: Simplify channel handling

Make both control and browsing channels to use the same structure to
store its channel information.
AVCTP: Allocate memory to hold incoming/outgoing PDUs

This makes possible to the handler to respond asyncronous as the memory
remains valid after it returns.

In addition to that it uses the MTU to calculate the buffer size
necessary.
AVRCP: Register to AVCTP state changes without depending on player

It is not longer necessary to have a player to be able to register the
extra pdu handlers.
AVRCP: Fix crash on disconnect

In case of multiple session being active the code was registering one
PDU hanlder per AVRCP session and given the session pointer as user data
causing the following:

    24 bytes in 1 blocks are definitely lost in loss record 370 of 893
       at 0x4A0884D: malloc (vg_replace_malloc.c:263)
       by 0x4C803FE: g_malloc (in /usr/lib64/libglib-2.0.so.0.3200.4)
       by 0x12EE9D: avctp_register_browsing_pdu_handler (avctp.c:1259)
       by 0x12FD7B: state_changed (avrcp.c:1402)
       by 0x12D391: avctp_set_state (avctp.c:403)
       by 0x12E6B4: avctp_confirm_cb (avctp.c:871)
       by 0x1606A3: server_cb (btio.c:254)
       by 0x4C7A824: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3200.4)
       by 0x4C7AB57: ??? (in /usr/lib64/libglib-2.0.so.0.3200.4)
       by 0x4C7AF51: g_main_loop_run (in /usr/lib64/libglib-2.0.so.0.3200.4)
       by 0x120EA1: main (main.c:551)

To fix this the PDU handlers are now per AVCTP session/channel so each
AVRCP session can register its own handler and pass itself as user
data.
AVRCP: Simplify state_changed callback

Move session creation and destroy to their own functions
AVCTP: Make use of allocate buffer to send data

There is no need to use the stack as the channel now have proper buffer
which can be used to store data to be send.

In addition to that make avctp_send_passthrough to use avctp_send.
AVCTP: Wait confirmation to send button release
AVCTP: Add proper prefix to AVC passthrough codes
AVCTP: Add proper queueing for channels

Add a request queue to channels to avoid dispatching too many requests
at once as the number of transaction is quite limited (16).
AVRCP: Fix reading wrong profile when acting as a controller

The role indicate which record should be read so we properly determine
the version and what features are supported.
AVRCP: Fix handling TG PDUs as they were CT PDUs

PDU handling needs to different depending on the acting role.
AVRCP: Add proper role init procedure
control: Add basic support for AVRCP 1.0 controller
control: Add Control.Connect API

This method can be used to manually connect AVRCP when acting as a
controller.
control: Add Control.Disconnect method

This method can be used to disconnect AVRCP.
device: Mark services as resolved also when loading from storage
audio: Move btd_device unref after last use in device_free

btd_device should not be used after local reference was dropped.
mgmt: Make mgmt_update_powered return void

mgmt_update_powered always returned 0 and this was never checked by
caller.
audio: Remove path from struct audio_device

struct audio_device is holding a reference to btd_device and path can
be easily taken from it when needed.
network: Remove redundant struct network_peer members

struct network_peer holds reference to btd_device so path, src and dst
can be accessed from it.