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!
Could you add a `Returns` section here?  This is important since people need to know what the `record_dict` will look like after this is done.  In this case, it is drastically modified (the tokens become ids).  Also please provide some guidance for the user regarding where in the filter chain this filter should go (presumably last).

Also...does this filter need to be public?  The rosetta user doesn't really need to know about the ids...they really only need to know about the tokens.  So maybe this can be a private method of `SFileFilter`.