Documentation

@Ian-Stewart-Binks put a lot of work into documenting our code. Good for him! :)