Base Sphinx documentation.

An initial pass at generating Sphinx documentation for this project.
This is by no means complete.
Horrible attempt at a test suite.

These tests provide minimal coverage. More test cases need to be added.
Add rudimentary documentation and tests.

They say "half a loaf is better than none", but this merge is more like
a moldy crust. It provides very, very basic Sphinx documentation and
a unittest-based test suite.

In its current form, this commit is only useful for developers who
already know how the project works. I am hopinf that they will be able
to help me expand both of these areas.