Hush a SyntaxWarning about * imports.

"SyntaxWarning: import * only allowed at module level"

The restriction was introduced in Python 2.1:
    http://stackoverflow.com/questions/3571514/
I have no idea why this didn't come up before.
Fix Content-Length in StripWhitespaceMIddleware.

If we don't adjust the Content-Length header upon stripping whitespace
then some browsers like Google Chrome detect the discrepancy. This can
manifest as a perplexing failure to load small static files (under the
200-byte threshold that wakes up Django's gzip middleware) on some dev
servers.
QSD Editing: Show session-expired error popups.

jQuery's ajax code takes 500 as failure, so use the `fail` callback.
Code to display errors in the success callback is retained, since 204
and 304 are successes but we shouldn't be returning those.

(204 becomes "success" in 1.7.1, and "nocontent" by 1.9.1.)

See also:
* http://api.jquery.com/jQuery.ajax/#jqXHR
* search the jQuery 1.9.1 code for "isSuccess"
* https://github.com/jquery/jquery/commit/bfc61b879e
Fixes email host in email addresses

(cherry-picked from commit 61c8022b153bade0a9b6319c1fef96454f834c1e)
Fixes the copy classes template

(cherry picked from commit 7d5bb2017b6f60375473fd0cac3647e163022363)
More tag-ification for open_class_category
Tag-ifies the open class category name/symbol
Moves open_class_category to be a property of Program

Since open_class_category is a program tag, it makes sense to make
it a property on a program. If there is no tag for the particular
program, it defaults to the global tag, which is the desired
behavior.
Adds a default for open_class_category that is not None
Removes qsd_tag and updates the open_class_category property
Minor fix for the rebase of #645.
Allows QSD urls to be template variables.

This was somehow removed in the big schema changes, and it makes several
useful patterns impossible, so I'd like to add it back.  See 9c29eed for
the original addition of this functionality.
Uses open_class_category in listclasses.html.
Uses program.grade_{min,max} for open classes.

It was previously hard-coded at (7,12), now it will check properly.
Fixes to rebase and to previous commit.

Turns out module.program only works sometimes and we should have used
module.get_program().
Make render_qsd tags expect literal URLs to be quoted

There is a family of tags {% inline[_program]_qsd_block %} and
{% render_inline[_program]_qsd %} that use InlineQSDNode.  This commit
enforces usage consistency of those tags by requiring that the 'url'
argument is either a quoted string, or the name of a template variable.
This avoids the confusing case of an unquoted string that fails to resolve
as a template variable and is then interpreted as a literal.

See discussion of 8d417fd.
Quote all literal url arguments to inline QSD tags

This is required by the previous commit.
Add a migration to remove quotes from QSD urls

This undoes the damage from some of the inconsistency in URL formatting
that we had.  The QSD objects with quoted URLs will be merged into the
version history of the QSD objects with unquoted URLs.
Add class category ID to JSON sections view
Add dynamic open_class_category support to lottery frontend

We now allow an open_class_category Tag to specify the ID of the
ClassCategories that should be used to represent "open" or "walk-in" type
classes for each program.  The lottery now displays the name of that
category and checks all classes against it, instead of using the hardcoded
name "Walk-in Seminars" and assuming that all classes with category symbol
W are in that category.