Improvements to import sorting

1. Support sorting imports where an import cover multiple lines.

Example:
import           Snap.Internal.Http.Types hiding (addHeader,
                                                  setContentType,
                                                  setHeader)
import qualified Snap.Internal.Http.Types       as H
import           Snap.Internal.Parsing
import           Snap.Internal.Types            (evalSnap)
import           Snap.Iteratee                  hiding (map)
import           Snap.Core                      hiding ( addHeader
                                                       , setContentType
                                                       , setHeader )
import qualified Snap.Types.Headers             as H

Unfortunately, the regexp that cover multiple lines requires a regexp
engine that chooses the longest match for a string, something that
emacs does not do by default.  Thus this patch includes a
generalization of the sort-regexp-fields from emacs' sort.el in
general-sort.el.  We use this version with the 'posix-search-forward
regexp function which returns the longest match.

2. Added function haskell-sort-imports-auto which can be added to
before-save-hook to always keep imports sorted.

(defun my-haskell-mode-hook ()
   ...
  (add-hook 'before-save-hook 'haskell-sort-imports-auto nil 'make-it-local)
   ...)

3. Remove the need to have point on a line starting with ^import
for sorting to work.  Instead we use a regexp that indicate what
is "out-of-bounds" and restrict the region to sort to that area.