Refine Lesson model and associated join tables

Implement associations and validations on Lesson, LessonAssignment, and
Enrollment models.
Refine User and Challenge models

Implement validations and associations for User, ChallengeProgression,
and Challenge models.