Generalize error parsing into one function using haskell-compilation-error-regexp-alist

This helps haskell-process to support the ferror-spans syntax, and
also the error jumping in haskell-interactive. My implementation of
-parse-error is lame, but it's general, anyway.

Ping @hvr
Another extension enabling case
Make error detection stricter
Ignore errors from haskell-docs
Support keyboard quit in haskell-complete-module-read
Make haskell-process-reload-devel-main prompt about DevelMain buffer
Add haskell-mode-contextual-import-completion
Indentation fix
Handle another case of extension suggestions in GHC 7.8

I really need to make a generic catch-all for this.
merge caballero with haskell-cabal
Set completion-at-point-functions as local hook

Using setq causes haskell-interactive-mode-completion-at-point-function
set globally, then it throws wrong-type-argument error in other modes.
Don't quote inherited face names
Fix user-error when opening an empty haskell file.

Opening an empty file with decl-scan turned on produces the error
File mode specification error: (user-error "No items suitable for an \
index found in this buffer")
and prevents other functions in the mode hook from running.

Adding non-nil noerror argument fixes the problem and an empty file
loads normally.
Customize asking to kill buffers when a session is killed.

When a session is killed, the user is currently asked whether to kill
associated buffers. This option allows the user to set a default "no"
answer.
Declare haskell-ask-also-kill-buffers in haskell-session.el
With prefix arg use -i flag with hoogle

Altered items:
haskell-hoogle
Use abstract key codes in haskell-indentation.el

haskell-indentation rebinds the return, backspace, and delete keys by
looking up the raw key codes for those three keys.  This commit instead
binds the more abstract key codes `"RET"`, `"DEL"`, and
`"<deletechar>"`. This has a couple of benefits.

1.  It makes the bindings work in console Emacs, i.e. Emacs run in
    a terminal with `emacs -nw`.  Raw key codes such as `[?\r]`,
    `[backspace]`, and `[?\C-d]` are only available when Emacs is
    running in an X environment, and by default Emacs translates them
    into UI-independent key codes such as `"RET"`, `"DEL"`, and
    `"<deletechar>"`, unless something binds them directly.

2.  It makes haskell-indentation more compatible with evil-mode.
    Evil-mode doesn't expect other modes to rebind raw key codes because
    of the issue above.

    In particular, evil-mode is supposed to treat backspace and return
    as movement commands (left and down, respectively) when in the `<N>`
    state, and release those keys back to the ambient keymap (in this
    case, the one provided by haskell-mode and haskell-indentation) when
    in the `<I>` state.

    However, it is currently unable to grab the backspace and return
    keys in `<N>` state because it waits for Emacs to translate the
    X-specific raw key codes before it binds them, in order to respect
    the abstraction there.  If haskell-indentation binds the raw key
    codes, evil-mode can't get to them first.

I reported this issue on the evil-mode mailing list back in September
2012 [1] but didn't get around to fixing it until today.  Sorry for the
delay!

[1] http://thread.gmane.org/gmane.emacs.vim-emulation/1667
Merge remote-tracking branch 'upstream/master'