Upstream the Sink element EOS logic
This was baked into the FakeSink but the pipeline assumes that the EOS property is always available. This also removes some boilerplate expected for all sink elements and defines it once as part of the base sink element.
At this point, the only thing any derived elements need to worry about is leveraging a new method, mark_eos(pad)
which marks a correspond pad when it receives an EOS buffer.
Depends on !5 (merged).