Extract ring and neighbour construction into separate top-level classes.
Make use of diamond's
Rename getRing to getPositions
Move getPositions to RingSnapshot
Move position allocation onto RingSnapshot