CLC-3368 Support both incremental-no-drops and batch Canvas refresh jobs

https://jira.ets.berkeley.edu/jira/browse/CLC-3368

This follows up on Jason's big incremental-import work from last sprint, which had the unexpected side-effect of deleting manually added course site memberships.

Following the plan outlined at the JIRA ticket, this creates two different enrollment refresh jobs.

The incremental-import is meant to run every morning. It should be fairly quick, but it only adds new enrollment/teaching records to bCourses. Students who have dropped a class will remain in the class's course site.

The batch-import is meant to run in off hours. It's the same as the current job, and will safely reflect student drops.

Most of the code is Jason's and was reviewed in previous sprints. I fixed a few minor bugs I found involving empty counts or arrays. All of my new/changed code is in the third commit: https://github.com/raydavis/calcentral/commit/a64a541353739f2bcec05983794ddaec9d59d51a
I'll put comments there instead of on the full list of PR changes.