Fix and optimize FindTilesInCircle

* Added the `minRange` parameter and renamed it to `FindTilesInAnnulus`.
* For a couple of cases where an annulus was wanted, I replaced the `outer circle - inner circle` logic with a call to get the annulus.
* Fixed and optimized `NearestMoveableCell` and `NearestCell`. This changes the existing behavior where the min range was being ignored.
* The precalculated tile offsets are now sorted by distance to avoid sorting them later.
This should be `a.LengthSquared.CompareTo(b.LengthSquared));`  Using LengthSquared will keep the precision that would otherwise be discarded when taking the square root.