Adds Administrators during migrations

The migrations would add users with V/Flags/UserRole/Administrator to
the Administrator Group, and give users with V/Administer on
Q/Programs/* an Administer Permission on that program. However, they
would skip over users with V/Administer on Q.

This adds additional steps to the migrations, and does one of two things
to users with V/Administer on Q:

 - If enddate is sufficiently far away, the user is added to the
   Administrator group.
 - If the bit was set to expire, the user is given an Administer
   privilege on all programs, with the same expiration date.
Optimizes 0019_userrole

Makes the following optimizations:
 - Fetches the Groups from the DB once, rather than once per UserBit.
 - Performs inserts into the intermediate auth_user_groups table once
   per Group, rather than once per UserBit, by using the
   Group.user_set.add(*objs) method instead of the User.groups.add()
   method.
Fix typos in backwards part of user migrations

I noticed these when trying to run the migrations backwards in order to
test some changes Jordan made to them.
Update use of install_groups() and user role migration

These tweaks were necessary to get the code to run on my dev server:
namely, casting to a list on the line before using the unary * operator,
and also using an explicit default for the argument to install_groups().
Merge pull request #701 from learning-unlimited/fix-groups

Fix groups