audio/player: Fix crash when current item UID is set to 0

Apparently some stacks set the current UID to 0 when paused/stopped
which causes the following:

bluetoothd[23185]: profiles/audio/player.c:media_player_set_playlist_item() 0
bluetoothd[23185]: profiles/audio/player.c:media_folder_create_item() (null) type audio uid 0
process 23185: arguments to dbus_message_iter_append_basic() were incorrect, assertion "_dbus_check_is_valid_path (*string_p)" failed in file dbus-message.c line 2531.
This is normally a bug in some application using the D-Bus library.
  D-Bus not built with -rdynamic so unable to print a backtrace

UID 0 is not a valid UID according to the spec so the code should not
attempt to create any object to represent it.
lib: Update company identifiers
obexd/MAP: Fix assigning pointer not value to 0

The fix introduced by 455fb131f08cddc9759c877e38ebff3b4bd975b2 would
leave err value uninitialized and set the pointer to 0 which doesn't
make any sense.
build: Update library version
Release 5.7
monitor: Add stub for UUID-128 to string conversion
monitor: Print UUID-32 and UUID-128 strings
gatttool: Remove unused code

Since commit 6a3a89774c6738df4d5b77636c4ce747b7497ae9 the code
removed here has no sense.
attrib: Avoid passing raw PDU to Exchange MTU callback

By centralizing the PDU parsing and validation internally to GATT API,
the callbacks become simpler.
attrib: Rename gatt_find_info() to gatt_discover_char_desc()

The old name referred to the underlying ATT PDU (Find Information
Request and Find Information Response) and not to the actual GATT
procedure (Discover All Characteristic Descriptors).
attrib: Modify gatt_cb_t signature

The boolean return value will have the same semantics as GLib watches:
returning "true" will keep the GATT procedure going; returning "false"
will interrupt it (either due to an error or because the desired
information was found.)

This "early interruption" of GATT procedures is allowed by the spec and
avoids unnecessary data transfers, specially on large attribute
databases and when using small MTU values.

Other changes are to use standard C types instead of GLib ones (which
are unnecessary here) and move the "status" parameter to the first
position, so it is consistent with other callbacks.
core: Refactor memory allocation for GATT service discovery

Prior to implementing partial primary service discovery, it is necessary
to move allocation of struct included_search, so the list of found
services (search->services) can be created incrementally.

Note that this list is also used later to collect (secondary) included
services and only then the full list of found services is used for
registering new services and detecting added/removed profiles.
core: Do not pass around memory allocated internally by GATT API

Instead, do a "deep copy" of the list of GATT services. While this
generates extra heap allocations, it also allows proper cleanup in case
of ATT or link errors. In other words, memory allocated by GATT API will
be freed by GATT API after callback returns.
attrib: Run callback with the partial result of service discovery

Callbacks should check for status equal to ATT_ECODE_ATTR_NOT_FOUND to
ensure that the service discovery has finished.
core: Only do Find Included Services after receiving all GATT services

Now that the primary service discovery callback is called on partial
discovery (instead of waiting for the entire discovery procedure to
finish), the included services discovery should wait until the full list
of services is found.

This is necessary because the logic for detecting added/removed services
depends on the full list of discovered services.
attrib: Allow dec_read_resp() to just check if PDU is valid

If a NULL "value" parameter is given, only check whether PDU is valid,
without copying attribute value to a buffer.
attrib: Avoid passing raw ATT PDU to gatt_read_char() callback

Instead, pass the attribute value/length. This simplifies error
handling and reduces memory copying.
attrib: Do not use Write Command in gatt_write_char()

Previously, if no callback was given to gatt_write_char(), it was
assumed that a "Write Without Response" (which uses Write Command)
should be used instead of Write Request.

This "shortcut" is unnecessary (there is gatt_write_cmd() for the
situations where Write Without Response is required) and just duplicates
code.

This commit also fixes the few places where gatt_write_cmd() should be
used.
attrib: Fix coding style in prepare_write_cb()
attrib: Simplify prepare_write()

All parameters can be retrieved from struct write_long_data fields,
therefore there is no need to pass them separately.