I merged all of the changes in the CPP+GPU branch into the master
branch. In this commit, I'm copying the master branch back into
the CPP+GPU branch, so that experimental development can continue
in the CPP+GPU branch.