Map M-SPC to 'cycle-spacing rather than the default 'just-one-space

Thanks @sachac
Bunch of haskell additions
Merge remote-tracking branch 'refs/remotes/purcell/master'