Add lottery frontend program module.

As the name implies, this serves as a frontend to the lottery registration assignment class. Currently it only allows configuration of parameters, running the lottery, and saving the results (or clearing previously saved results).

See Issue #803.
I think this should actually be self.real_priority_limit, rather than self.effective_priority_limit+1 or self.effective_priority_limit.  We want to fill in the last priority level, but not grade range exceptions.  (This may originally be my fault >.< .)