Schedule Item
open inner class ScheduleItem<T>(val startTime: Double, val duration: Double, val priority: Int, val message: T? = null) : Comparable<Schedule.ScheduleItem<*>>
A ScheduleItem represents an item on a Schedule. It has a start time, relative to the start of the Schedule and a duration. If more than one schedule item needs to start at the same time, then a priority can be provided to determine the ordering (i.e. the smallest priority goes first).