Clean up SFileFilter.filter_sfile() filters

The user-defined filters implementation is complete and documented. The
currently present code has been rewritten in this style as much as
possible. The _done_check() function has been added back so that all
previous tests still pass.