Feature granular scheduling

This pull request is a new feature for allow granular scheduling within events (ticket #286), when you add an audience member to an event, you can click on the time icon next to their name or the group name, this will bring up another window where you can set the custom override time for that group or user.

There is validation for overlapping times, if you click the validation button. Currently it doesn't stop them from submitting if a time overlaps, but it will highlight it in red. Also if the event time is shortened and a time falls past the new event time, then that group or user will be highlighted in red until the time is fixed. 

On the user side, the custom times will be displayed rather than the overall event time on the dashboard calendar and on the ics calendar. Once you go to the event you can see the overall event time and the custom times for each group/user.

Coping the event or moving the date of the event will preserve the audience times.