Autoadds current time to grade change request approval.
Actually doing what the previous commit wants
Having emailcodes on sections (finishes dealing with #1184)
Adds a __unicode__ to grade change requests
Let me search classsections by classsubject id
More minor stuff
More minor things
Deals with #754
Kill ParametrizedSingleton in esp.cache.argcache

This was a workaround for an issue with Django double imports that no
longer exists.

TODO: do something about the cache registry, which assumes cache UIDs
are unique (which was enforced by ParametrizedSingleton)
Kill cache_by_uid
Kill argcache uid entirely
Remove unneeded import
Fix signature of ArgCache.delete_key_set

There is actually no reason to use **kwargs here.
Move cache delete signal to cache.signals.cache_deleted
Reorganize code in ArgCache

ArgCacheDecorator: argcache.py -> function.py
describe_func/describe_class: function.py -> marinade.py
Clean up arg-processing code in ArgCacheDecorator
Remove dangling reference to deleted function in marinade.py
Fixes bug with adding a list of users using add_list_member

Improves upon fix in 003d738b, based on discussion in Github pull
request #1297.

Splits add_list_member() into add_list_member() and add_list_members(),
where the former only takes a single user or email, and the latter only
takes lists of users or emails.
Merge remote-tracking branch 'origin/main' into argcache-cleanup

Conflicts:
	esp/esp/cache/argcache.py

(conflict with removed imports in 6db42ed)
Add todo comments for describe_func