Add next_milestone and start_at to milestones.

Just following the existing previous_milestone and end_at definitions.
Update schema to add start_at to Lesson Plan Milestones.
Change validate to be on start_at, from end_at.
Change milestone entries to use start date.
Add start_at in milestone controller.
Change main milestone template to use start dates.
Add Start Date to milestone form.
Generalise validate_start_end_date to work on any datetimepicker pair.
Add clientside validation of start/end dates.
Fix incorrect IDs being passed to validatr helper.
Sort by start_at instead of end_at on Lesson Plan index.
Change milestone controller references from end_at to start_at.
Sort overview by start_at.
Add start_at edit field to overview.
Add note that End Date is optional.
Adapt Other Items to handle items after last milestone.
Properly include entries within a milestone's end.

If we have a milestone with a defined end date that isn't the day before
the next milestone starts, we use that milestone's start date as the cutoff.
This is to prevent "gaps" appearing in the lesson plan.

If the defined end date is less than or equal to one day before the start
of the next milestone, we include it as a cutoff.
Rename next_end_at to next_start_at to reduce confusion.
(Hopefully) make query logic easier to understand.
Don't try calculate a start from the previous milestone.