Modified UISF/Widget internals

MidiEvents are now no longer part of the Input in a UISF or in the
UIMonad.  Instead, midi messages are treated as regular streaming
values.  This cleans up some code.

Euterpea.IO.MUI.UISF.initialIOAction was added to allow widgets to
perform one-time initialization actions, removing the need for
unsafePerformIO in widgets.