Implemented subtraction and negative numbers!

CPU program now has more robust unit tests.

GPU program is not as robust, but it's ok since it is all running
the same code. It's easiest to test on the CPU so we'll write the
unit tests for that.