initial models

laying out the foundation

Notable changes: 
- renamed `Course` to `Subject`
- Using polymorphic associations instead of STI for user types.

Responsibilities and attributes to be added along the way.