replace FilterMethod with Filter

This gets us a basic filter class to work with as we progress. It also
allows us to clean up the code in base by passing a Filter rather than a
bunch of args.