Doc everything

This branch reviews all of the documentation on our major classes, and ensures that all major public classes and methods are well-documented.

Close #765.
What's the status on these signatures now?  I am unsure if it's a good idea to change our current jsdoc structure until we got confirmation on how we use typedoc.  I think we should just put jsdoc where needed and avoid changing structure.