badge consistency check - verifies that badges are in the right order/etc

adds a set of checks that can be run either from utility.py or (in the future) via periodic task

I will use this check to verify that my badge fixup script change works correctly.

Eli can you put some eyes on this and let me know if I'm missing any weird edge cases with the checks or not?

\m/
-Dom
Another purely-stylistic comment: you can use tuple unpacking here so you can say

```python
for badge_type_val, badge_type_desc in BADGE_OPTS:
```

So you automatically assign the first and second items in the tuples to those variables instead of having to say ``badge_type[0]`` and ``badge_type[1]``.