Remove unused dbmail EmailController
Simplify QSD bits calculation in ESPAuthMiddleware

We can simply check if the user is an administrator now.
Remove anchor reference from miniblog EntryAdmin
Remove UserBit from miniblog get_visible_announcements()
Remove anchor references from program admin classes
Remove anchor references from modules admin classes
Update method of finding teachers in Ajax scheduling module view
Update availability schema used in AvailabilityModule
Remove Datatree references from ChecklistModule
Remove unused announcements reference from CommModule
Update JSONDataModule for new schema
Update ListGenModule for new schema
Update ClassManager catalog function to find class documents correctly
Add Printer and PrintRequest models

We used to use UserBits as a means of generating and consuming requests
for printing student schedules on-site.  The Permission and Record models
that now replace UserBit aren't a good fit for this.  This change creates
two simple models:
- Printer, for listing the printers that are available on site
  Note that if none are created, there is effectively one 'global'
  printer.
- PrintRequest, for denoting when a student's schedule should be printed

The onsite (program module) views have been updated to use the new models.
Fix typo in StudentRegCore students()['confirmed']
Update ClassSection.ajax_autocomplete() to avoid Datatree

... but it doesn't look like we use this?  I'm not sure.
Use Program.program_type in TeacherAcknowledgementModule
Update TeacherClassRegModule.teachers() for direct teachers many-to-many
Fix anchor reference in program {% class_options_row %} tag
Avoid setting a path on QSD media objects when attached to QSD page only

The qsdmedia Media model currently allows associating with a class subject
or a program as its 'owner'.  The generic QSD view allows uploads, and in
this case we don't have one of those objects to associate the Media with.