move parsing sub-filters to load time

We're also no longer passing around the block of sub-filters for
processessing. Instead we're creating Filter objects that can be used.
move filter error to load time rather than run time