Sorted neighbor communication ordering so no races will occur

I came up with an algorithm for sorting the neighbor
communications. It was tested in the algorithms python script. Now I
can rearrange the hill exchange code to be simpler as well.
Fixed neighbor assignment bug