Cache Program.open_class_category

It wasn't cached, and loading the catalog from a cold cache, for example, calls
it once for every section.
Add tokens to make the catalog invalidate fewer caches

The dependencies were set correctly, but due to #866, the catalog was
invalidating the cached rendering of every single class whenever anyone signed
up for any class.  Now it shouldn't.  This will hopefully save a lot of
computation during student registration.
Merge branch 'catalog-caching' into lunch-fixes
Fix cache dependencies of render_class

We need to depend on not only the user's StudentRegistrations for this
section, but in fact on their StudentRegistrations for all sections, because
of things like lunch constraints -- a change made in another block could
affect whether you can add a class in this one.  So we depend on all SRs for
this user.

This was causing some nasty caching bugs in lunch constraints for MIT.