Begin fixing badge numbers

Changes the 8.5 badge numbers, and starts making uber check if they're in range when shifting them up or down.

This isn't a very good solution, but we can use this to fix the staff and supporter badges and make them adhere to the new numbers. Basically, you can select "next available badge" on a Supporter or Staff badge, and it will fix all those badges' numbers... except the one you're actually changing.
Hrm, at a first read-through of this code I'm not 100% sure what the intent/motivation is.

The purpose of this function is basically as follows:
* when we remove an existing badge or otherwise change it such that it creates a "hole" in the badge numbers, we need to shift all badge numbers above it down so there's no gap in the numbers
* when we assign a badge number that already exists, we need to be able to move everything else up one number to create a space for it
* when changing a badge from one number to another within the same badge type, we need to shift all of the badge numbers in between up or down (depending on the direction of the change)

So previously, we'd just iterate through all of the non-zero badges of the specified type within the range given, and say "increment or decrement this by 1".

Now we're saying, for each badge within the specified range:
* check whether the badge we're accommodating is already in-range or out of range
* if it's within the proper range, do the same as we did before
* if it's not already within the range, assign the badge we're shifting the lowest valid badge number and then recursively call this function to shift everything else down to make a space for this badge

If the goal is to correct all of the existing badge numbers to account for the fact that the ranges were incorrect, I recommend writing a one-time script for that.  Is that the goal, or is there some reason why we're putting this check in the Uber code itself?