pipeline: Add a watchdog element to the pipeline

Right before each sink, we add a watchdog element that
will make sure the pipeline is not frozen for no good
reason and post a message on the bus if is the case.

That ERROR message will trigger our recovery code.
Let the user know when Pitivi is dead

We now notice that Pitivi is in an inconsistent state
thanks to our watchdog, and the various recovery retries,
and if everything fails, we should let the user know that
Pitivi is dead, and let him save his project before
quitting.
pipeline: Recover the pipeline when not receiving ASYNC_DONE

Not receiving ASYNC_DONE is really bad!
pipeline: Properly follow recovery states

During recovery there are two major step:
  * Go back to PAUSED
  * Seek to last position

We consider that the recovery worked when that
second step is fully completed.

Also in the last try (so after 2 failing tries to,
recover), we do not try to seek back to the failing
point and just go back to PAUSED with position == 0
timeline: Set the snapping distance when a project is loaded

Otherwise we could end up with no snapping distance set, and thus no
snapping happening in the timeline.

It is normally done in the zoom level changed callback but it was
possible that this codepath was not triggered if the zoom level did not
need to change
Expect ASYNC_DONE after commiting

And make sure no seek is launch meanwhile otherwise bad things can
happen
Commit the timeline when removing a layer
undo: Properly make remove layer undoable

And make sure to wait for ASYNC_DONE before commiting timeline
when undoing actions
undo: Always commit the timeline on Clip property change when undoing

Otherwise the timeline won't be updated and the user will not see any
change from the undone/redone action
pipeline: No need to flush pipeline when PLAYING

Flushing is just to make sure that a frame is produced with the new
pipeline configuration, when we are playing we are already sure that
will happen so no need to force that again
titleeditor: Do not flush pipeline when setting default values

Otherwize we might be flushing the pipeline before it even prerolled
Fix undo tests

That implies:
    * Use the pitivi Project  subclass of GESProject in the tests, that
      is needed for the undo subsystem to work properly (we need access
      to the pipeline to flush it)

    * Make sure that audio and video tracks are added to newly created
      Blank projects

    * We properly disconnect from TrackElements when removing a clip
      from a layer

    * Adding a clip leads to 3 Actions as GES will set the height and
      width of clips now
Serialize load-project action in the scenarios

This way all the scenario are fully self contained and the project
correspond exactly to what they should

+ Give a proper naming to the scenarios
+ Make sure scenarios are specific to a sequence of
project-loaded/project-closed
Add a validate utility and override the stop; action type in there

In the future we can override more action types
validate: Listen to pipeline position in PAUSED when running scenarios

So that we can see precisely what seek action are being executed
Bring my ctrl+C back!