Added thorough documentation to public interfaces.

The milestone 2 description makes it sound like we need to be documenting our
methods, so the generated documentation will hopefully suffice.