Gracefully handle Studio authors setting invalid problem dates

[TIM-423](https://edx-wiki.atlassian.net/browse/TIM-423)  See the docstrings and comments in this PR for the reasoning behind this solution.

Some implications of this approach:

1) Course authors will no longer be able to create an invalid date configuration by setting inherited start/due dates.
2) Existing problems will continue to work.  This relaxes a validation requirement without introducing additional constraints.
3) If a course author sets a submission deadline *after* the problem deadline, the problem will stay open until the submission deadline.  I think this is the right solution, since if the course author explicitly sets the submission deadline in the problem definition, that's probably the deadline they want.
4) Previously, the submission start date was always set to the problem start date.  Since we can no longer trust this date, I've added a `submission_start` attribute to allow users to specify this explicitly (it still defaults to the problem start date, after we've transformed the problem start date so it satisfies the validation rules).