Adds HSSP class changes script
(cherry picked from commit b91681647a8af7d77b0762b99ad90c23108667c1)
Changes line endings in class changes controller
(cherry picked from commit 38c6244e1438c919eab2bbe40e9e345cc6baac77)
Removes unnecessary imports from class changes controller
(cherry picked from commit 3f80da8a5f7c7d1d35ae252dfaa1c0016369e0c5)
Fixes lunch_by_day in classchange controller

See afa9fb6de33069679d5406869ae46541ed43a77e
(cherry picked from commit ffa4a4a6ba01d0fbd837f92f777a244533f44522)
Fix null graduation_year in classchanges

Make classchanges tolerant of null graduation_year values in student profiles

See 3d8f7e190428e510ec326859603b8a6ef04b3e36
(cherry picked from commit de05efafaae31a4a5db381b15d3115e0acbc96d3)
Fixes classchange comment
(cherry picked from commit 36d6c6b5449defb56383f3ddf3a16a2cf10154d0)
Fixes priorityLimit()
(cherry picked from commit 429b04bd618c272a54f0d9481e603d21cca66b4c)
Fixes typo in classchanges
(cherry picked from commit b4aed12f69468039bd3bce56e005c75508df6998)
Fixes to class change controller
A few more scheduling checks query performance fixes.

Still not good, thanks to your friendly neighborhood resources models,
but this cuts out a few more repeated queries.
Minor fix to cache dependencies of hasModule().
Merge pull request #1042 from learning-unlimited/lsr_hssp_rebased

Adds Class Change Controller
Merge pull request #1035 from learning-unlimited/scheduling-checks-fixes

Scheduling checks fixes and upgrades
Update documentation with recent pull requests.

AJAX scheduler, virtualenv, grade change request.
Merge pull request #1073 from learning-unlimited/documentation_update

Update documentation with recent pull requests.
Add publicly viewable onsite class list

Should be revisited in the future, as this is a simple hack to show a
public version of the class list already displayed by the onsite
interface.

Partially addresses #167.

Cherry picked from portions of 88ec6d6.
Tweak formatting in password reset/recover

Addresses #1021.  Proper solution will rewrite these templates to use
Bootstrap forms in <div>s instead of <table>s.
Update survey XLS export for new schema

This addresses #840.  Fixes a 500 error when accessing
/manage/[program]/[instance]/surveys/dump.
Fix SplashInfo saving error reported by Granite Hills
Adds backend for email sending to user contacts

The current schema of the commpanel email sending system allows for
sending to an arbitrary list of users. However, it could not send to an
arbitrary list of emails, so it was impossible to construct a commpanel
filter such as "email all guardians of all students enrolled in at least
one class".

This commit migrates MessageRequest to have a sendto_fn_name CharField.
This holds the name of a function in esp.dbmail.sendto_fns which takes a
user and outputs a list of related addresses to send to. The default
behavior is the old behavior, to only send to the user itself. However,
additional functions can be used instead to specify guardian emails,
emergency contact emails, and combinations of those. During the
processing of a MessageRequest, each user in the PersistentQueryFilter
of recipients is passed to the named sendto function, and those
addresses are sent mail.