Fix elective-priority bug.

Place electives by matching in the order defined in Rules.
Rename Student.curriculum to Curriculum.
Initialize curriculum with empty courses in Curriculum.
Keep references to all-courses, semesters, electives, and NIs.
Add Course.isElective().
Add Student.getStartYear().