minor change to the source's `filter` handling

Instead of treating the filter as an accessor, just have a `filter`
method that sets the filter if given a block, otherwise returns the
current filter.

This acts like the reader we want but is a nicer API for specifying
a new filter.