Add support for manually added students

This feature *requires* the Canvas code to be patched to expose the sis_batch_id
in enrollments. If this patch is not made, this script would now treat all existing
users as manually enrolled and re-enroll them every time it's run

Manually added students have no sis_batch_id. Such students are stored in a hash and
after processing a course, any manually added students who are now in the SIS feed for
any section in the course are deleted from their section *if* the section they were
in is different from the one the SIS places them in. If the section was the same, we
assume Canvas will convert them to SIS enrollments (i.e give them an sis_batch_id)
Bug fixes for sis_batch_id patch

- User may be enrolled manually in multiple sections so keep array of sections
rather than just the most recent one

- Canvas does not convert a manual enrollment into an SIS enrollment if in the same
section, so first issue a 'delete' before issuing an 'add' if a 'manual' user shows up
in SIS for the same section.
Add debugging statements
Bug fix
bug fix
more debug statements
Argg
Bug fixes?
Bug FIXED!
Rewrite Manual Student processing

Manually added students can't be deleted via the sis_import method,
so collect mnaually added students as an array of enrollment objects
per course. At the end of each course, see if any manually added students
match the SIS source for any of the sections in the course and if they do
iterate through the array of enrollments and do a DELETE enrollment API call
for each. Confused yet?
Bug fix: Enrollment API URL was wrong