WL-2928 Starting to refractor subject.

We define a static list of allowed identifiers along with their string values.
Add tests to check that it's all working.
Removed the logging as this should be done in the calling code if it cares.
WL-2928 Don't fail with different namespace prefixes.
WL-2928 Don't blow up when we don't have a good namespace.
WL-2928 Expose the subject identifier outside.

This should be used by our importer.
WL-2928 Correct case on enum.
WL-2928 Remove incorrect JavaDoc.

Alse removed redundant arguments to methods.
Correct case of variable teachingComponentId.
Remove the unused reference to the service.

CourseComponentImpl required a coursesignupservice to be passed to it when creating it but never used it.
WL-2928 Just import known categories.

We switching the management of courses -> categories so that the course is responsible for the list of categories it is part of. This means we have an immutable category.

We also switched to SQL for importing the categories as this gets around multithreading issues.