catalyst: set the active source before creating filters
catalyst: add missing itertools import
catalyst: more list -> tuple changes
catalyst: hook up finalization

This allows the analysis manager to know when to write its data.
catalyst: use a plain Surface representation