Handle sub-hour time ranges and more flexible selectors

- Times are specified to all APIs in terms of minutes, so that
  durations of arbitrary length can be specified (ex. every 30
  minutes, every 15 minutes, etc.)

- Cells are decorated with the hour and minute of their start
  time, so it is possible to make every half-hour dashed, add
  a solid line at noon, etc.

- Cells are now referred to as "marked" instead of "available",
  in case you want to use the widget to represent times that
  users are unavailable.

- There are now different CSS classes to represent whether a
  mark is being removed or added.