Project Submissions refactor

Split code submissions into multiple categories all in the form of `*_submission_content`

Each `*_submission_content` has a `project_submission`. Same goes for evaluations.

Close #964 
Close #962 
Close #948 
Close #947 
Close #944 
Close #935 
Close #934 
Close #933 
Close #932 
Close #931 
Close #925 
Close #924 
Close #923 
Close #920 
Close #909 
Close #895 
Close #883