More thoroughly disable electric-indent

See #377
Revert "More thoroughly disable electric-indent"

This reverts commit 99658ce11e08b8f0825a17247bc84336b6a4cd8c.
Disable indent-tabs-mode in haskell-cabal-mode

"Tabs are not allowed as indentation characters due to a missing
standard interpretation of tab width." - Cabal manual

See #44
Sandboxable haskell-mode using haskell-process-wrapper

Following the discussion from
https://github.com/haskell/haskell-mode/pull/350#issuecomment-59434038,
creating a haskell-process-wrapper.

Excluded cask tests.
Refactor to use only a `haskell-process-wrapper-function`.

Following this discussion - https://github.com/haskell/haskell-mode/pull/370#issuecomment-63237778.

This permits to one's own wrapper function.

For example, here is one to use with nix-shell:

```sh
(custom-set-variables '(haskell-process-wrapper-function
                        (lambda (argv) (append (list "nix-shell" "default.nix" "--command" )
                                          (list (shell-quote-argument (mapconcat 'identity argv " ")))))))
```

Unit tests are ok.
Need to test in real life now.

Tests removed.
Improve the docstring to show as example a function that actually works.
Move docstrings to before interactive decls.
Large re-organization to remove cyclic module dependency graph #381
Explicitly require cl-lib wherever it's used.

Don't depend on other files to load cl-lib, because whether a file
uses it or not is an implementation detail.

Also, remove a (require 'cl) introduced in c3a44b6bd23ea.
Add haskell-mode-find-uses command
Make highlight-uses-mode behave more like C-s/C-r wrt C-g/RET
Use isearch face instead of isearch-lazy-highlight
Restore autoload for haskell-process-load-file

`haskell-process-load-file` lost its autoload directive during the
project reorganisation.