stbt: add a method `process_all_frames` available for the tests

This method forces the pipeline to process all the frames for the duration
of the calls.

This is meant to be used when precision is required.

In order to get all the frames processed and preventing any of them from
being discarded, the attribute queue.props.leaky from the pipeline need to
be set to zero.

In order to prevent the pipeline's buffer from being filled, and therefore,
getting some frames dropped, the next attrbiutes need to be changed:
1) queue.props.max_size_buffers = 0
2) queue.props.max_size_time = 0
3) queue.props.max_size_bytes = 0

Two new methods, Display::save_config() and
Display::restore_last_saved_config() have been added so as to restore the
previous values of these attributes.

When leaving the context process_all_frames, it is necessary to catch up
with the live stream, therefore the code after its yield statement uses a
new method Display::catch_up_live_stream(), which creates again the
source_bin and sink_bin and links them in the pipeline.

Example usage code:

with stbt.process_all_frames():
    # do your measurements here.
# this line runs in normal (frame-dropping) mode.
stbt-run: Expose the method get_live_stream_timestamp

This method enables to get the timestamp of the last frame queued for
processing.
This can be used to get an approximation of the current time expressed
in terms of the stream timestamp.
stbt-run: detect_match and detect_motion now return the timestamp of the
frame processed

Previously, there was no guarantee that the timestamp returned was the one
of the frame processed.