Demographics initial work

Note that a lot of the logic in the CourseEnrollmentTask is refactored from the original logic in course_enroll.py
I'm assuming that we expect to be running with an interval start of around 12/3/13, and that for all users that deenrolled after that date, they would all be marked as having enrolled on the first date.  I'm wondering if we really want this to start the interval on the day before date_a.  Our data collection is actually including events on date_a, and we wouldn't be able to distinguish these inferred enrollments from real enrollments on the date.