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
Strip ^H from output in interactive-mode
Implement ^H filtering on live terminal output
Support if and multi-way if in indentation (fixes #247)
Fixes bug in instance declaration
Multi-identifier type annotation (fixes #300)
Fixed indentation for guards
Make indentation to the left optional (fixes #292)
Haddock: Make parsing of quoted module name compatible with older GHC versions
Add CONTRIBUTING.md file
Better docstring for haskell-hoogle
Colorize hoogle output, and run hoogle synchronously

Hoogle searches locally and runs quickly, so it rapidly produces all
its output. It's better, then, to insert it in one shot into the
result buffer (now called "*hoogle*" instead of "*help*").

And if we pass the "--color" option, we can then get more readable
output, provided we pass it through "ansi-color-apply-on-region".

Closes #299