Replace some nonreadable regexps with rx macro
Change some looking-at/string-match to match data-preserving versions
Wrap some functions with save-match-data
Move haskell-align-imports-regexp into haskell-utils
Replace single-alternative ifs with when macro
Tweak filename and warning recognition for compilation regexps

For example, ghc 7.4 outputs "Warning:" on different line than filename itself
and previous regexps do not handle it:
/home/hackerjoe/HelloWorld.hs:23:1-28:
    Warning: The import of `Control.Monad' is redundant
               except perhaps to import instances from `Control.Monad'
             To import instances alone, use: import Control.Monad()

Of course, having spaces in filenames isn't the best idea, but context of
compilation regexps seems to allow reliable filename recognition since
filenames are given as full paths and beginning of filename part is either bol
or space character.