Adding missing doc comments for all exported types

As mentioned in #221, we need to document all of our exported types, functions and methods.