define Frame class as object passed between pads
The first commit reverts back to a single kind of object passed between pads on graph execution, Frame now instead of Buffer. This object can hold stream metadata, like EOS, that wasn't available through a simple list. Implementations can subclass this object to define sub-structure in the passed object (e.g. list-like for list of Buffers).
The second commit re-implements the EOS as a sub-class of Frame, provided as a pre-instantiated object. I think this makes the code slightly cleaner, but this commit can be dropped if this implementation is not desired.
currently depends on !10 (merged), but can be rebased