Port gstreamer capture plugins, video renderer.

As a side effect of not porting the same code two or three times over
this moves a lot of duplicated and often out of sync code to QGstUtils.
It also adds a new renderer plugin interface as the buffer allocation apis
have changed and aren't compatible with QGstBufferPoolInterface.

Change-Id: I0a86a5449600df8574eff6f831ce1591d8dd29db
New camera selection API in QML.

Also added a new QtMultimedia global object which makes it possible
to retrieve the list of available cameras. It can be extended with
new utility functions in the future.

Includes documentation, example and auto tests.

Task-number: QTBUG-23770
Change-Id: Ifea076329c3582ea99246ee1131853344a7b773f
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Add an EGLImageKHR video node.

[ChangeLog] Added a VideoNode plugin which allows direct rendering of
EGLImageKHR backed video frames.

Change-Id: I36fb6fd27680dbe9c71a446bbd54df95488725f8
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Implement exposure and whitebalance lock for gstreamer camera.

Change-Id: I58277d69c18ad2e31cad719a2dd6361c0c2d7e98
Add additional exposure modes to QCameraExposure.

[ChangeLog][GStreamer][Android] Camera exposure mode extended to support
Action, Landscape, NightPortrait, Theatre, Sunset, SteadyPhoto,
Fireworks, Party, Candlelight, and Barcode modes.

Change-Id: I13d4bb042d27c0bd2ffcd369882b56bbabc84335
Add a filter property to QCameraImageProcessing.

[ChangeLog] New filter property for QCameraImageProcessing.

Change-Id: I999e349e3e4f284b533fa62ba50903fbd21cb400
Add support for face detection focus point mode to camerabin backend.

[ChangeLog][GStreamer] Implemented the face detection focus point mode
in the gstreamer camerabin backend.

Change-Id: Ia582d2fb5e74d5b438aa0038224c5e20e597d53e
Implement encoder settings in camerabin backend.

This is not comprehensive since different encoders have names and
representations for many settings, but it should cover bit rate for most
encoders, and quality and encodingMode for a number of common encoders.

Change-Id: I0ba4e70c2f234e0deaaa02bdecc0f5198122c1e9
MER: Add packaging.

Change-Id: I5496ac47752ae645919ecb57de840c93274334bf
[qtmultimedia] Packaging: remove QtWidgets dependency
Implement more full resource policy features.

 * Handle released by manager properly.

Signal resourcesReleasedByManager is different from signal
handleResourcesLost and needs to be handled separately.
Signal handleResourcesLost means some other client has acquired the
resources, thus the resources are lost from us, but if the other client
frees the resources, we will automatically get the resources back.
With resourcesReleasedByManager we lose the resources, and resource
manager releases them as well (same as if client would call release()),
so only way to re-acquire resources in latter case is calling acquire()
again.

This distinction is useful for example in cases where user is listening
to music with headphones connected and removes the headphones, then the
music player shouldn't continue playback until user requests so. But if
user is listening to music when phone call is received, it is convenient
to resume the playback automatically after the call.

 * Implement availability changed.

Availability changed is information whether resources the client is
interested in are available (no higher priority resource classes have
acquired the resources).

 * Implement missing resources released.

Emit resourcesReleased signal when receiving corresponding signal from
libresource-qt.

 * Add mechanism to change used resource class.

Check for environment for special variable, and if the variable has
proper data, use that as the resource class. Can be set with for example
qputenv("NEMO_RESOURCE_CLASS_OVERRIDE", "game");
Resource policy for QAudioOutput.
Only call pa_cvolme set on stream creation if volume explicitly set.

Streams without a custom volume set use suitable volume selected
by the PulseAudio server. This is usually the correct choice, since then
stream-restore module can apply old volume to the stream. Also with
Sailfish explicitly setting the volume to streams breaks system volume.
Resource policy support for QSoundEffect.

Since sound effects are something short and mixed with other audio, do
not acquire resources explicitly. Follow the resources availability
information to determine when it is ok to play the sound effects.

When client has registered itself to resource manager, client's streams
are classified properly. If no higher priority client has acquired the
resources, isAvailable() is true, and sound effects can be played. We
do not explicitly acquire the resources, since then other clients with
the same resource class would lose the resources, thus not possible to
have second client play music with QMediaPlayer class while our client
would just want to play simple sound effects.
Set volume only if volume was explicitly set.
Add resource release timer when pausing or stopping media.

If media is paused, stopped, or end of media, if state hasn't changed to
playing state, release the resources. The idea with the timer is that if
for example media player is playing one song which ends, there won't be
release()/acquire() unnecessarily if next song is immediately set as
media and started playing.
Enable NEMO_AUDIO
[qtmultimedia] add qttest-devel to build dependencies
MER: Disable tests with Qt 5.4 dependencies.

Change-Id: I30949616095bcbcd72d6fabfb3340ee7ac0c14ab
Add a control which allows overriding the gstreamer video sink.

This enables applications to selectively use platform specific or
unusual (video4linux perhaps) gstreamer sink elements to render video.

Change-Id: Ife2c2f9b2149d6b598c69a78f1e116ba05b46e10