Initial commit

Code is very messy (spun off from another project).
Will likely clean up soon.
I might experiment with using
http://hackage.haskell.org/package/units
for better type safety in MIDI units.