Add EUCLID code to courses as metadata
It would be helpful to able to link courses to EUCLID codes (INFR****).
This would help in the following situations:
- Knowing if a course is running or not - Query the BetterInformatics courses.json list with the EUCLID code
- Auto-adding categories in the future (maybe) - the mapping could allow automatic discovery of running courses without a category
- Keeping track of history - Courses can undergo changes and be offered as multiple EUCLID codes over the years, without changing much in content. Being able to link them all to a course can show what they were previously offered as.
A course can have multiple EUCLID code based on duplicates offered at different levels (lvl 10 vs 11, or UG vs PG).
On the other hand, a EUCLID code will always only map to one course content (as any course changes through the Board of Studies will update the code). This is because the university follows a policy where EUCLID content is the "golden copy" where everything else is derived from, the data there is always precise.
Includes a database migration and frontend updates to accompany it.
This MR makes the "semester" and "form" database fields for a category redundant as the same data is sourced on the frontend using an external API (BetterInformatics.com/courses.json), but they are kept just in case.