Refactor video handling in stream

Introduce gallery subclasses for reading videos, and use those instead of more specialized classes in stream.

Also, handle webcams (opened by index) similarly to webcamFormat (i.e. accept them as 0.webcam, or whatever) to avoid ambiguity in how to open files.

There are multiple commonly used video extensions, and we already have a DefaultGallery, so this PR explicitly enumerates some extensions with subclasses of the common videoGallery. This is perhaps not ideal in general, but no better ideas so far.