Hopper specific changes from the last step of part 1
A version of the GPU code with an O(n) algorithm - finally.  It computes the wrong answer, but we'll have to debug that...
Adding a whole bunch of invariant and assertion checks.  Fixed several bugs so found.  Currently not computing forces, but at least it's matching at this point.  It wasn't before
Followup with the last - it appears to actually work for various sizes of particles tested and up to 100 steps.  Comments added to explain why the current algorithm is horrible (but good enough for the class.)