Refactor register callbacks

I find this easy to understand, but might be subjective.
Merge remote-tracking branch 'origin/refactor-callbacks' into trainee-accounts
Fix lint issues
Refactor course factory to use traits.

Traits seem more natural to me than extra factories, plus they’re composable.
Refactor policies to work with lists of objects.

Don’t pass in a single instance to the constructor, rather use the specific object when you want to know how to render it.
Index page listing the courses

Allows the user to come to the app, log in, and see the courses that they have available.