Currently, when an element wants to push or pull, they call gst_pad_*.  These functions then decide what
to do based on the selection of pointers in the pad.  There are at least 2 options for each, plus some
header stuff to do various checking of flags.  Unfortunately, because of the selection of pointers in
the pad, there is at least one case where scheduling has to be tricked, by providing a pointer to a
function with no body.

What I propse is that these functionos be replaced with macros that call a function pointer directly.
The default functions (provided by GstPad) would be capable of chaining, that's about it.  When a
schedule is formed, these get replaced with more specific functions, provided by GstBin or a subclass.

In the chain case, the pad_push_func might even be replaced brute force with the chain function, since
they have the same prototype.  In the cothreaded case, various functions would provide the ability to
switch, deal with bufpens, etc.
