ReaderFilters: refactor setSource

SetSource in ReaderFilters had an issue in that, sometimes magical
things happen in the abstract layer (e.g. setMetadata). This call was
not being chained through the Filter stack, resulting in out-of-synch
sources between filters and wrapped readers.

MetadataWrappers will now keep their own source reference, and
ReaderFilters will now check their Metadata during a setSource call
(after the parent has returned) to see if they are out of synch, calling
setMetadata if necessary.

Updated ChannelSeparator to correctly use this new workflow.

Closes #59
FilterTest: add setSource test

Added a test to verify that ReaderFilters can be reused between
different files (that Metadata changes do not go out of synch after
using setSource).