alsa-mixer: Fix the analog-output-speaker-always path

A left over "required-any" made this path useless for most people.
While we're at it, also add "Front Headphone" like for the normal
speaker path.

Tested-by: Colin Guthrie <gmane@colin.guthr.ie>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
dbus: Support dynamically created card profiles

Use the recently added core hook to detect when new profiles are added
to a card, and update the D-Bus object accordingly.
dbus: Add signal org.PulseAudio.Core1.Card.NewProfile

Add a new D-Bus signal to report profiles that have been dynamically
created for already existing cards.
bluetooth: Handle UUIDs announced later

In some cases (typically during pairing) UUIDs might be reported by
BlueZ incrementally, that is, as soon as they have been discovered. At
this point module-bluetooth-device might already be loaded, so the late
UUID announcements need to be handled and additional card profiles
might need to be created accordingly.
bluetooth: Add support for transport created by external profile

With BlueZ 5 it is possible to have profile registered by a third party
process which does not share the same bus id as bluetoothd so it is
necessary to store the sender of the transport to be able to talk to it.

Note that this is backward compatible.
mainloop: Remove redundant wakeup_pipe validity checks.

The pipe is opened when creating the mainloop and closed
when freeing the mainloop. The pipe fds can never be less
than zero.
mainloop: Check pa_write() return value.
esound: Suspend/resume also sources on STANDBY/RESUME commands.
Log the reason for every suspend/resume.

I was looking at a log that showed that a suspend happened (at
a strange time), but the log didn't tell me why the suspend was done.
This patch tries to make sure that that won't happen again.
card-restore: Log the restored profile name.
sink-input: New volume_factor system

Implement setting of more than one volume factor.  The
real value of the volume_factor will be the multiplication of these
values.
modargs: Adding pa_modargs_get_value_volume()

This function gets a pa_volume_t from a string.
bluetooth: Fix condition to load module

d->hfgw_state is just another profile that should be considered exactly
as the rest inside device_audio_is_ready(), which is being used to
decide if the discovery hook gets triggered.

Therefore, there seems to be no reason to make an exception for this
profile and skip checking if the condition d->audio_state !=
PA_BT_AUDIO_STATE_INVALID holds true.

This change makes no practical difference but delaying the load of the
module also for HFGW until Audio.State is received. The benefit is
that the behavior and the code are more consistent across profiles.
bluetooth: Make pa_bluetooth_transport_parse_property() private

The function is not being used outside bluetooth-util and thus can be
made private.
bluetooth: Remove unused pa_bluetooth_discovery_get_transport()

The function is not used and it also exposes D-Bus-related information
in the internal API, which is in general undesired.
bluetooth: Add device pointer to transport

Transports always have an associated device, so add the pointer as a
member to the structure, and remove the discovery pointer since it
already exists in the device object.
bluetooth: Use round() to convert PA<->BT volumes

The code can be simplified since it's just trying to round the result of
the division. Note that the resulting behavior is slightly different,
specially when the volume is 0. In this case, it will remain at 0,
instead of being set to 1.
bluetooth: Add transport hashmap to discovery

Path-based transport lookups are required in a discovery basis, before
the associated device is known. Therefore, it makes more sense to
maintain a hashmap in the discovery structure itself, instead of
iterating all devices.
bluetooth: Use transport array instead of hashmap for devices

Devices will have zero or one transports per profile, and besides the
typical lookup is also profile-based. Therefore, replace the old hashmap
(which used the transport path as key) with a simple array which holds
a transport pointer per profile.
bluetooth: Remove pa_bluetooth_device_get_transport()

With the use of an array to represent a device's transpors, the function
becomes trivial and thus can be removed.