Ext filter

Add ExtFilter, which implements filtering by file extension. Add dedicated needles for extension; that way, we can use nice, cacheable term filters.
This is not an enhancement suggestion, but a test to see if I have gotten an understanding of what is happening here.  I'm making the assumption that by the time this code runs, ```isinstance(positive, dict)``` is ```True```.  If that is so, then it could optimize away double negatives by adding this between lines 110 & 111:
```python
        if 'not' in positive:
            return positive['not']
```
not that double negatives are likely a problem, this is just a test of my understanding...