Adding lots of useful Documentation

I felt so bad about asking someone to read my code when I didn't have
any documentation.  This problem has now been rectified!