Improve docs, and make the variable names consistent

Expanded most of the documentation, and renamed some of the variables
so that variables that are mutated are (almost) always called dst.
The two codes will be nearly identical from the compiler. The question is one of legibility, and in this case legibility is following the style.