added pre-roll support for midi events

can send out events for MIDI tracks ahead of time to match the latencies
of our different lights.  also ported HueEffect to be more generic and
able to target any kind of light in the installation