- changing an object's name after construction is not allowed. Checks are performed
  when adding objects to parents that no duplicate names are used, changing the name
  to a duplicate name after adding it is therefore allowed and voids internal
  consistency.

- implement return values from events in addition to the gboolean. This should be
  done by making the event contain a GstStructure with input/output values, similar
  to GstMessage.

- implement iterators for traversing elements upstream or dowstream. Use more simple
  algorithm using indegree topological sort.

- unlinking pads in the PAUSED state needs to make sure the stream thread is not
  executing code. Can this be done with a flush to unlock all downstream chain
  functions?

- implement clock selection as explained in part-gstpipeline.txt

- when a pipeline with a live source goes to PAUSED again, a sample is prerolled
  in the sinks. This sample should be discarded, possibly with a flush event
  started from the source.