A schedule can contain many shift patterns. Collectively they determine the times that the
service/person/resource associated with the schedule, is available.
Each shift pattern has start and end times, indicating a shift of available time.
Shift patterns can be one-off or recurring regularly. If they are recurring the frequency
attribute is set to either 'daily' or 'weekly'. If recurring on a weekly basis the by_day
attribute indicates which days of the week the shifts will occur on.
The except_date attribute is an array of dates that shifts will not occur on, cancelling out
the recurrence pattern for that date.
The end of the shift pattern is indicated by either the end_date or repeat_count (the number
of days or weeks the pattern runs for).