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.
It's just that "Afterwards" sounds a little weird. There's nothing wrong with the two sides being unequal; that's how assignment works in Go.