Refactor: Only assign to self.start_pipeline once the pipeline is ready

I prefer this more transactional style of coding because it means that
`self.source_pipeline` never refers to a half-constructed pipeline, even
in the presence of exception.  This makes it easier to verify in-variants.

This is an incidental change made in the process of creating the next
commit fixing latency bugs.
Bug fix: Ensure that frames are still dropped even after a pipeline restart

If stbt's image analysis is slower than real time frames can get queued
up in the pipeline meaning that the frames we are operating on may be out
of date.  To minimise this latency we drop frames from a queue in the
GStreamer pipeline.

This commit fixes a bug introduced in b8d39d4 where this leaky behaviour
was not being applied after the pipeline was restarted.