Add test utilities

Run ./out/<platform>/bin/test-self-view after building to run a simple
audio/video capture and output test.

Run ./out/<platform>/bin/test-send-receive after building to run a test
with one sender and one receiver in the same application.
local: Split local media sources in their own pipeline

They are now a separate pipeline that end in inter*sinks. By this
we properly separate any errors and anything else from the main pipeline.

Next step is to do the same for remote media sources, share some code
for this and then finally put every transport agent into its own pipeline
too. Then we won't have a single global pipeline anymore.
local: Add FIXME comment about using GstDeviceMonitor

Currently there is no probing at all and we just hardcode
local sources, and e.g. assume two camera devices.
local: Implement unlink in the local media source

Based on a patch by Robert Swain <robert.swain@ericsson.com>
local: Fix finalize function in media renderer
local: Add support for setting a NULL source in media renderer

This mechanism of _set_source(renderer, NULL) will be used for
disconnecting the renderer's source.
local: Request the initial framerate from the video source if possible
owr: Allow media source element NULL
local: Shut down complete local media source when the last user disappeared
local: Mark a private function as static
transport: Change the remote media source to use the inter elements and a tee too

Currently quite some code duplication which will go away during further
refactoring, especially parts can move to MediaSource directly and other
parts (the converters!) can be moved to the input side of the transport agent
and renderer.
owr: Change MediaSource API to allow embedding in other pipelines

Instead of a get_pad() there is now a get_source_element() which will
return a GStreamer source element that can be added to any bin and
will provide the requested data.

As a side effect this also makes state changes more sensible and
removes the need of a valve in the media sources.
local: Put all media renderers into their own pipeline
transport: Give every transport agent its own pipeline
owr: Remove the global pipeline

Now we can add error handling and independent dumping functions.
local: Shut down the media renderer pipeline if there is no source
owr: Refactor common code from both media sources to the base class

It now creates the inter*src and converters as required.
local: Drop leaky queues in the renderers and set the sink to async=TRUE

The inter*src already has the leaky behaviour we want and we can safely
do async state changes now as our renderers are self-contained pipelines.
transport: Start the transport agent pipeline when the first media session is added

No point in having the transport agent in PLAYING before that.
transport: Make the input tee non-leaky

This is not required anymore as the inter*src are leaky already.