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
This line is totally cool, but for future reference, a more Pythonic line might have read like

```python
msg = '{a.full_name}: badge #{a.badge}: {err}'.format(a=attendee, err=out_of_range_error)
```

Passing keyword arguments to the ``format`` function often makes this stuff easier to read, though this is obviously just a matter of style.