Changes in the 0.9 version
--------------------------

 - Refcounting and API revised for thread safety, see rules in
   docs/design/part-MT-refcounting.txt

 - Scheduling is now done by the elements, they start/stop
   processing threads themselves. This removes the need for 
   a separate scheduler.

 - State changes now happen from sink to source. This makes sure
   that downstream elements are ready to process data when upstream
   starts producing.

 - EOS/ERROR/... does not change the state of elements anymore. This
   means that when the application sets the state on an element, it
   remains in this state.

 - GMainLoop integration. Information on the state of the pipeline
   is now received in the mainloop via the GstBus.

 - Events move separate from the datastream, this allows for both
   in and out of sync delivery of events.

 - Generic _pull() replaced by _pull_region() so that random access
   can be made faster.

 - data passing happens from PAUSED, called the preroll phase. In this
   state no data is rendered but it is queued in the sinks.

 - negotiation simplified. Caps are now attached to buffers and travel
   along with the datastream. 

 - GstBuffer is now subclassable.

 - Ghostpads now look and feel like real pads.

 - New Seeking/flushing policy.

 - Addition of base classes and helper functions in the core to abstract
   away the harder parts of plugin development.