Provide initial support for "cabal repl" process type

Two new customization flags are introduced:

- `haskell-process-path-cabal`, and
- `haskell-process-args-cabal-repl`.

Also, a new `cabal-ghci` choice for the `haskell-process-type` option
is added.

When using "cabal repl" mode, the workaround of sending a `:cd`
command on session start as well as adding the autogen-path to the
include path is suppresed, because "cabal repl" takes care of this
already.  Hopefully, we can remove those kludges required by
`cabal-dev`/`cabal-ghci` at some point.

This commit addresses #195.
Fix type of `haskell-process-args-ghci' defcustom
Add new Haskell compilation sub-mode

This is a compilation sub-mode tailored to GHC's compile messages with
some heuristics for supporting Cabal projects in a DWIM fashion. This is
completely orthogonal to haskell-interactive and inf-haskell.

See new "compilation" chapter in the info manual for more details.
Make 3603ec2c3 compatible with Emacs <24.2

A few compilation-related variables are not available in
Emacs version prior to 24.2
Fix bug with certain kinds of indentation.
Merge pull request #204 from lensky/master

Fix bug with certain kinds of indentation
Initial commit of Shnippet form https://github.com/LukeHoersten/shnippet
Fix internal GHC module translation

Join the module and ident before trying to translate, and split them
back apart again after translating.
Update internal GHC module translations

Align the list and add a missing translation.
Always use the ident as an anchor

Instead of only using it when browsing to an external location, use it
for the web URL *and* the local file path.
Revert "Fix internal GHC module translation"

This reverts commit 53a63a1292d67c5f2dc7f690d57be7c201120ddf.
Fix internal GHC module translation

Split full name apart via regexp and concatenate back together
after translating.
Abstract `haskell-ident-at-point' a little

`haskell-ident-at-point' is now defined in terms of
`haskell-ident-pos-at-point', so that other functions can get the
region of the point rather than the point itself. This is useful
sometimes.
Change haskell-presentation-mode to be a derived mode

The old minor mode approach was bad as it would lose the keybindings
and normal behaviour of a haskell-mode buffer which are actually quite
useful, e.g., for using the same keybinding to drill down into the
info of yet more types.

This shouldn't break anyone's setup, in fact, it should improve it.
Improve ident name detection in `haskell-process-do-info'

For some reason I'd written ^[a-z][A-Z] which obviously doesn't work
on constructor names, and ends up wrapping them in parens, e.g. (Foo),
which GHCi does not like. So now it's ^[a-zA-Z_].
Fix import.qualified.

import.qualified relied on the function `nil-blank-string`, which is not available for all Emacs installs (it wasn't for mine.) Making sure instead that the `name` string is of non-zero length should work just fine, too.
Improved some interactive-mode doc strings
Merge pull request #218 from ian-kelling/master

Improved some interactive-mode doc strings
Move fontification into haskell-mode main module

Also simplified by just using a temporary buffer instead of making a
buffer with a cached mode enabled.
Make indentation level configurable

Indentation modes should start using this to decide how much to
indent. Some crazy people indent their Haskell by four spaces, rather
than two. When I have to work in those projects, I have to
conform. The solution is to add a .dir-locals.el file like this:

    ((haskell-mode . ((haskell-indent-spaces . 4))))

To indicate that this directory contains Haskell code that should be
indented four spaces.