Fixed: Can set earlier due date as an individual due date extension and related bugs

This pull request fixes [LMS-6563: Can enter in earlier date in Individual Extension](https://openedx.atlassian.net/browse/LMS-6563), which was also mentioned in the individual due date extensions feature PR #2062.

Now an error will occur if the instructor attempts to set a due date that is earlier than the original due date.

I also fixed two related bugs that I noticed while working on this:
* The API would allow setting a due date extension on a unit that had no due date at all. This now returns an error.
* If one set an individual due date extension, then deleted the original due date, an Internal Server Error (500) would occur when deleting the due date extension, and neither a success nor failure message would be shown to the user.

Unit tests are included.

This was done for OpenCraft ( cc @antoviaque ) and falls under their organization contributor agreement.
Also, this line doesn't have coverage.  I would like to see this get touched in the test_api. Currently it returns `Successfully reset due date for student Robot13 Test for chapter 18 (i4x://MITx/999/chapter/chapter_18) to (no due date)` which doesn't seem right if I change week1 to week3 in `TestDueDateExtensions.test_reset_date`. I think it would be nice to handle that return better with something like "Has no due date to reset" or similar in the response.