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. I fixed a few minor bugs I found involving empty counts or arrays. All of the new code is in the third commit: https://github.com/raydavis/calcentral/commit/1c542b2858c69d90d64e8e4cd4192e15af4be1ed