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.