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!
Does `_doc_id_set` need to be an attribute of `self`?  It is created from the arg `doc_id_list`, which is not an attribute...so making `doc_id_set` an attribute seems unnecessary and possibly dangerous since then this method has an unannounced side effect.