Generic filters2

I think I hit on the major points and recommendations I've gotten (but yell at me if I forgot any!). I changed it so that the filtering is done updating the original dict as much as possible and I made it clear in the documentation that that's the idea. I added back in the _done_check() method's functionality that I previously removed. I also wrote a couple tests.

So this is probably (at least from my perspective) pretty close to being mergable. Let me know what you guys think!
Rather than `self` it seems better to use `sfile_filter` and then add a docstrign where you explain that a subclass of `SFileFilter` is the desired datatype.  `self` is too ambiguous.  Same below for the tf idf filter