Add support for popular "λ> " prompt to inf-haskell

This addresses #176
Add new `haskell-str` module

This module is going to replace `haskell-string` in the long run; it
features a slightly shorter namespace function prefix `haskell-str-*`
and tries to better follow Elisp coding conventions.

Most notably, this module provide functions for converting to/from
Haskell string literals, which sets up some of the infrastructure
needed for addressing #164 and #178.
Remove unused `haskell-interactive-mode` variable

Using a variable of the same name as the mode is a convention for
minor modes but not for major modes.
Add `haskell-interactive-mode-input-partial` function

This functions retrieves the partial user input up to point. It's an
error to call this function when point is not at/after the prompt.

This also generalizes `haskell-interactive-at-prompt` to return the
position after the prompt if point is at prompt.
Hide internal buffer created by `haskell-interactive-mode-eval-as-mode`

This uses a whitespace prefixed buffer-name, which is omitted from
user listings. Moreover, a `haskell-` prefix is used to ensure
namespace separation.  After font-locking, the buffer content is
erased to help garbage collection.
Add support for `completion-at-point` to interactive-mode

This requires a `ghci` with the `:complete` command
(see http://ghc.haskell.org/trac/ghc/ticket/5687)

A GHCi based on GHC 7.6.x providing the `:complete` command can be
found at http://hackage.haskell.org/package/ghci-ng

This addresses #178
Highlight as haskell for :type and :info.
Fixup forward declare-function broken by a7528e6
Auto-import loaded modules.
Move string function to the, er, other, string module.
Rename `haskell-str-ellipsis` to `haskell-str-ellipsize`

This also cleans up semantics and adds a proper doc-string.
Add ERT-based unit-test support to `make check`

This also adds two simple tests for `haskell-str.el`
Reload with -fbytecode support.

@hvr
Simple re-indentation, no semantic change.
Fix typo in loadish.
Don't use dired to appease make check.
Don't display loaded modules, too noisy/unuseful.

@hvr
Add some unit-tests for `haskell-str-literal-{encode,decode}`
Optimize `haskell-str-literal-encode`

This optimizes the case of trivially escaped strings (i.e. those that
don't use any escaping and don't look lexically invalid).