Do partial restructuring with basic conflict resolution

Test performance is still abysmal. I'm committing this code in
anticipation of some changes to the conflict resolution system,
which is surprisingly subtle.
Add docstrings and clean up some code
Add better rule reranking

Among other miscellanea.
Add support for atidesha and samjna rules
Re-add support for 'it' augment
Add weak support for 'lat'
Add miscellaneous rules

Now test coverage is merely terrible, as opposed to atrocious.
Fix various failing test cases

A few small tweaks, not much more than that.
Fix various small bugs and improve debug output
Fix various test files

These are:
- filters.py
- operators.py
- sounds.py
- upadesha.py
Add (old-style) support for asiddha

About 20% of the tests pass.
Add comment describing 'asiddhavat'
Add basic support for 'mit'

Unfortunately, there are some other interpretational problems still
at work.
Fix bug in guna on 'F'
Clean up imports in vibhakti.py
Regularize operator API

Accepts a (state, index) pair and returns a new state. Maybe this
should yield states instead?
Fix some 'lat' cases
Fix 'operators' test file to use new API
Refactor filter code

- Filter decorators are now classmethods
- new class TermFilter, for simpler filters
- filter cache now a class variable

The same is coming for operators soon!
Refactor operator code

Mainly, operators are now classes. There are a few reasons for making
this change:

- better parallelism with filters
- decorators as classmethods
- better modularity (separation of value-modifying code from operator
  boilerplate)
- terser body methods, depending on the method
- cleaner approach for specifying the operator 'locus', which will make
  'asiddhavat' a lot easier to implement.