CAUTION: Includes a schemamigration. Adding two new models that inherit the same abstract model.
- SubmissionRuleDeviation (abstract)
- DeadlineRuleDeviation
- MaxSubmissionsRuleDeviation
Submission.is_submitted_late now takes the DeadlineRuleDeviations in to account.
Merge branch 'master' into submission_exceptions
Admin for DeadlineRuleDeviation.
Added some convenient methods as well as related_name for SubmissionRuleDeviation's exercise.
Merge branch 'master' into submission_exceptions

Conflicts:
	exercise/exercise_models.py
- Moved the code from Submission.is_late to BaseExercise.is_open_for as it needed to be invoked from BaseExercise.is_submission_allowed.
- Added when keyword argument with default of datetime.now() for many methods that compared times with the current time so that it would be possible to use the same current time when these methods are called paralelly during the request.
- Some code formatting in BaseExercise.is_submission_allowed to follow PEP8.
- Comment refactoring for Submission._set_status
- Added a bunch of methods to BaseExercise that are related to the max_submissions and MaxSubmissionsRuleDeviation.
- Rewrote the parts of the BaseExercise.is_submission_allowed that considered the submissions_left check.
- Also some PEP8 refactoring near the changed and new code.
- Removed some unnecessary imports from submission_models.
- Added MaxSubmissionsRuleDeviationAdmin.
Merge branch 'master' into submission_exceptions
- Removed the has_submissions_left as it was confusing when also considering the presence of have_submissions_left. To check has_submissions_left, call have_submissions_left with students as list of just one student.
- Improved the error messages.
A small correction.
Merge branch 'master' into deadline_deviation_without_ui

Conflicts:
	exercise/exercise_models.py
Merge pull request #92 from Rubinous/deadline_deviation_without_ui

Deadline and MaxSubmissions deviations without ui
Merge branch 'master' into improvements_for_assistant_workflow

Conflicts:
	exercise/admin.py