Demographics initial work

Note that a lot of the logic in the CourseEnrollmentTask is refactored from the original logic in course_enroll.py
Wondering if it's safer to use < here instead of !=.  Just in case it were to get the start and end mixed up, in which case this would take forever to bomb out.