Proof-of-concept reporting filters (ASA-#193)

Add proof-of-concept support for extensible filtering of the reporting page,
beyond just the fields on the Group object. At the moment, this is just a few
space-related filters, but in the future this might include groups missing
membership confirmations, groups whose presidents aren't students, groups who
have filled out the FYSM, etc..
Filters: use "category", not "group"

"Group" is a heavily overloaded term in the context of the ASA DB, so talk
about "filter categories" instead of "filter groups". (Suggestion from geofft.)
Filters: select by office/locker ownership
OfficeHolder: Be explicit about Athena username

Apparently people assume we want a full name...
Add Group.admin_groups method (ASA-#181)

This adds a Group.admin_groups method, which can be used to find the groups
that a user is an admin of (where "admin" is defined as "has a specified
permission [default: admin_group] via an OfficerRole).
List only adminned groups in anti-hazing select

When selecting groups for the membership update and anti-hazing form, this
includes only the groups that the user is an admin of, not all groups. With the
previous commit, this fixes ASA-#181.
Show the group name on the update page
JSify the giant list of groups (ASA-#185)

This requires that Chosen (http://harvesthq.github.io/chosen/) be installed at
media/js/libs/chosen/.
Make issues.csv cycle-aware (ASA-#191)
Memberships: refactor issues.csv slightly
Include suspended groups in issues.csv (ASA-#195)
Finish removing membership confirmation search box

This finishes removing "Option 2" on the individual membership confirmation
page.  Commit 5560f6d7528 had removed it from the UI, but not removed the
backend code.
Save some unnecessary queries with select_related

Computing how many people have confirmed still requires O(n) queries, but at
least this gets rid of a few of the things that required O(n) queries.
Do my counting in the DB...

Really, I'd like to use something like annotate to make this one query, but
that doesn't seem to be reasonably possible (yet). Some options:

- I could use extra()
  (https://docs.djangoproject.com/en/dev/ref/models/querysets/#extra), but that
  requires hand-writing SQL.
- It looks like a Prefetch object might work
  (https://docs.djangoproject.com/en/dev/ref/models/queries/#django.db.models.Prefetch),
  but that's not available until Django 1.7. (Scripts is Django 1.4 right now;
  I predict Django 1.7 will release in late 2014 and reach scripts in Summer
  2015.)
- Something with values() and/or select_related() might work
  (http://stackoverflow.com/questions/19642627/subquery-in-select-django/19645545),
  but it looks like it would be a huge pain.
- F() expressions
  (https://docs.djangoproject.com/en/dev/ref/models/queries/#f-expressions)
  growing some sort of generic subquery support feels plausible, but at the
  moment it looks like you can only pass in a string to identify a field, not a
  queryset.
Remove the membership list

I think the definition and numbers are plenty of information for us.
Standarize on UK-style ndashes

"foo --- bar" not only looks ugly, but apparently nobody really uses it.
Apparently US-style is "foo---bar" and UK-style is "foo -- bar", and I think
the latter looks better so I'm using it.
More thoroughly purge mention of membership lists

Follow-up to commit e4a35ff087.
Reword membership definition text

Hopefully this is clearer.
Add pre-group-approval warnings

This fixes (enough, at least for now) several issues by adding warnings
to the approval page when certain constraints are violated:
- ASA-#216: New group "ERROR:" emails should get suppressed earlier
- ASA-#234: max locker name length
- ASA-#246: Add reminders of common issues to the new group confirmation page
Basic people lookup support (ASA-#186)

Mostly working, but the UI could use more work, and we need support for looking
up more people at once.