Add direct frame-extraction function

This is much more efficient than calling out to ffmpeg, but works by saving the
image directly to a file rather than producing a stream.  It could
alternatively just keep the image data in memory, which may make more sense for
some uses (i.e., the current use of store.StreamEnumerator.fromFileGenerator).
Also changed the temporary segment extraction to use the same approach, which
means the segment cannot be streamed efficiently before being cached, but has
the benefit of actually working.

This should hopefully be enough low-level functionality for now, though it
could be cleaned up.  In particular, all the ActiveGenerator stuff is now
unnecessary (which I should've realized earlier).  Also, segment extraction
could potentially be done more efficiently using a similar approach to the
frame code.
Cleanup now-unused code and simplify frame handling