Add Program.getListDescriptions()

This just moves some code out from Program.getLists(), since it will be
useful in other places.
Create UserSearchController

We have some messy query code in esp/esp/users/views/usersearch.py.  This
commit takes the query logic of the search_for_user function (which is
used to filter down a list of users based on criteria like IDs, zip codes
and graduation years) and puts it in a controller so that other parts of
the code can use the functionality, without necessarily following the
standard view sequence used for generating a user list.
Add jQuery UI button widget
Start adding a new version of the comm panel view

This program module view (temporarily named commnew) uses some of the
earlier changes to provide an easier interface for selecting commonly used
lists.  It actually renders 3 tabs:
- one of which is the new 'basic list' selector
- one will contain the myriad Boolean choices given by the conventional
  comm panel
- one will contain a history UI yet to be implemented
Add user filtering options to new comm panel

This includes filtering by name, school, etc.  Also tries to show only the
options you need, i.e. no need to enter in a school if you're searching
for parents.  In the future this might let us surreptitiously show
different fields which are called the same thing, but look in different
parts of the database, e.g. "school" for students vs. "school" for
educators.
Tweak some of the program list names/descriptions
Add combination list feature to new comm panel interface

This closely mirrors the old comm panel, except the algorithm for
combining lists is different.  The old code attempted to combine your OR
and AND settings in a meaningful way, based on the ordering of the lists.
However, the user didn't have control of the ordering of lists, and it
wasn't capable of making arbitrary Boolean statements.  In an effort to
acknowledge these shortcomings and make the logic easier to understand,
the new code simply ANDs (intersects) together all of the lists selected
for AND, then ORs (unions) the result with all of the lists selected for
OR.  Comments welcome.
Fix CSS conflict with comm panel e-mail body text area
Add message_requests view to JSONDataModule
Add history UI to comm panel

This is the initial implementation of a feature that allows admins to pick
and choose from previous e-mails to initialize a new one.  This could help
people remember what e-mails they sent in the past and what information
was contained in those e-mails.

I think there is a lot to improve here and there may still be some bugs,
so please take a look.  Some problems I can think of:
- Large established chapters are going to see a lot of past e-mails come
  up, so it might be good to have more search/filter options.
- The persistent query filters seem to only apply to a particular program,
  so (for example) if you wanted to take an e-mail from Splash 2011 and
  send it again for Splash 2012, you'd have to just copy out the text and
  start a new message request.

Addresses issue #45.
Fix bug in comm panel query generation
Rename URLs for new and old communications panel
Update a couple of comm panel URLs that were hardcoded
Remove print statements from comm panel code
Update comm panel POST URLs
Fixes the commpanel jquery display issue
Add an error handling function as an argument to json_fetch()
Display a popup when the comm panel is loaded without the JSON data module
Clear user filters when the base list is changed in the comm panel
Clear recipient type buttons so they don't stay checked