Models

PR for code review 

Just laying out the foundation. I think this is enough for now to start making some APIs. Responsibilities and more attributes will be pushed to the models as we go along.
Hahaha! How about `Section`? I'm thinking `Course` can be confusing because a teacher can teach 1 course to multiple class/section and students are grouped by class/section.