Dbarch/parse course

@nedbat @dianakhuang Please review

I moved all of the parsing of the org/course/run strings into a Location.parse_course_id() method as a distinct step in my massive refactoring of locations/locators. Please review.