Update module docs

These are some updated module docs. It's been completely restructured in an effort to be a lot more clear.

Feedback welcome :)

Resolves #892