Documentation

@Tathanen @jrit @dmaloneycalu @thoughtpalette take a look and let me know if anything looks confusing or needs more documentation
I like this plan. Do you want me to implement it in this pull request or later?