Mutability is the property of an object that defines whether or not you
are allowed to modify it.  In the context of GST, that means that if you
want to mutilate a buffer, say to do an audio effect, you may have to do
this on a copy of the buffer, if someone else has a reference on it.

The simplest sequence of events in a decoder pipeline is as follows:

1) create buffer
2) allocate and fill data region, attach to buffer
3) pass to next element
4) decode the data into new buffer, free original buffer
5) pass to next element
6) buffer gets copied to output device (sound, video, whatever)

Both of these buffers are created from malloc()'d memory, are referenced
by one and only one element at a time, and are never modified in place.
They have no special flags, and when ref==0, they're simply free()'d.

An optimization in the case of the sound card or video double buffering,
where the output buffer actually comes from the output device.  In that
case the element will be aware of such things.

A more complex example is where the data is teed after being decoded, sent
to an effects or visualization object.

1) create buffer, fill from source
2) hand to decoder
3) create new buffer, decode into it, free old buffer
4) hand to tee
5) ref++, hand off to 
