Add setup code for some models and refactor

The models include the following:

- sandhi rules
- indeclinables
- verb prefixes
- verbal stuff:
  - roots
  - prefixed roots
  - verbs (unmodified only)
- pronouns

Along the way, gut the whole "enum" implementation -- hard-coding IDs
in classes is inelegant and unsafe. Unfortunately, we have to keep the
hard-coded IDs in 'Tag' for polymorphic joins.

Also, refactor all of the schema definitions into one file. Due to the
multitude of names involved, one test case ended up using a compiled
version of a file that no longer existed, which was resolved after
lots of debugging.

Additionally, refactor database code into separate files and merge
'sanskrit.db' with the main package.
Add simple query API for verbs
Update README.md

Add some information about the query API
Add more powerful state controls to 'sanscript'

The function now toggles on any token in 'toggle' and behaves
accordingly for 'suspend_on' and 'suspend_off'.
Add support for querying pronouns
Add support for querying regular nouns

Since nouns are much more regular than pronouns, we implement noun
queries by storing noun stems and noun endings then generating forms
on request.
Remove tests on enum sizes

Enum is already tested in a more substantial and meaningful way.

Moreover, I'm still unsure of how to model instances where values are
unknown or undefined. If these are modeled with an extra enum value,
then the removed tests will fail.
Refactor sanskrit.language files into toplevel

Much less of a headache!
Add more scripts to sanscript

These are:
- Gurmukhi
- Oriya
- Tamil

These scripts cannot fully support Sanskrit, but they do a reasonable
job in most cases.
Add some support for internal sandhi

This includes the "n" and "s" retroflexion rules and a better API
for applying internal sandhi.
Add 'build' function to Context API
Add schema and setup code for verb endings
Add schema to mark irregular stems

Also, fix a baffling error in one of the FK relationships in 'Stem'.
Rename 'session_class' to 'session'

Since scoped_session acts as a proxy to the underlying sessions,
there's no need to constantly instatiate a new session
Create 'GenderGroup' for stems

Originally, 'Gender' was overloaded to refer to both form genders and
stem genders. Since stems can have multiple genders, 'Gender' held
genders like 'm' and 'f' in addition to 'mf'.

But this makes it difficult to reason about the form genders that are
compatible with a stem gender. Suppose we have a stem with genders
'mn'. The only way to decompose these genders is to read the 'abbr'
field from the gender, iterate over the letters in 'abbr', and do a
reverse lookup for other genders. This imposes a restriction on the
values of 'abbr' that can only be represented as code.

This approach muddles the semantics of the truth of the situtaion: a
stem *has many* genders, and the schema should reflect that.
Add support for querying irregular nouns

Also, add some code to apply consonant reduction to a paradigm.
Add setup code for adjectives and participles

Also, refactor several parts of the setup code. For especially large
data, the setup code uses CSV instead.

Still remaining:
- verbal indeclinables
- modified/prefixed roots and their forms
- feminine stems of adjectives
Add support for querying for verb summaries

These summaries show representative forms for the given verbs,
including verbs and participles. Other forms, such as derivative
stems and indeclinables, are not yet implemented.
Add class 'Term' for handling sound groups

Right now it has just one function: 'simplify', which simplifies the
last letter of the term.
Add basic form analyzer for inflected nominals