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.
Still doesn't solve the ambiguity between the different signatures.  While switching order can help actually give us parameters, it still doesn't fix the problem between how to differentiate between the different return types.  I personally think it's a bit janky for the first function to be stored in the Returns field and the other function return values to be in the comments section