Some cleanups and performance improvements:
* Be more selective about what lists are regenerated; we were generating way too many lists each time called. When calling from tbswap, use new -t option to generate just the active lists. When called from setgroups, use -p option to generate lists just for the project. Add update option for when user changes email address (and all lists really do need to be regenerated). * Add "diff" processing. Instead of blindly firing each new list over to ops with ssh, store a copy of all of the lists in /usr/testbed/lists. After we generate the new list, diff it against the stored copy. If the same, skip it. Otherwise stash new copy and fire it over. This should reduce the wait times by quite a bit since the lists rarely change (except for the activity lists of course). * Add -n (impotent) option for debugging; skips the ssh over to ops. * Reorg a lot of stuff; it was getting hard to follow.