Clean up the Source.h file to just be a pure-virtual interface so I can
separate spec from implementation better.

Also, added the key methods that must be implemented, which better helps
me track.
on open check for custom io and for options; actual ffmpeg does not
happen yet.