Revert "Highlight with 0 or more occurrences."

The original commit has been identified as the cause for Emacs freezing up
during font-locking. This revert closes #190 and fixes #182.

This reverts commit 05a46adc1def7f699e5e83db02e21f42ee799253 (re #160).
Improve top-level declaration font-locking in presence of newlines

This commit is a 2nd attempt at what b458cdf (re #160) tried to
accomplish. To keep it simple, only a single optional newline is
tolerated after the top-level identifier. Moreover, in case Bird-style
syntax is active, this feature is disabled altogether.
Add new `haskell-cabal-find-pkg-desc` defun

This is basically a port of Cabal's `findPackageDesc` function[1] but
without the exception throwing. This function attempts to match
closely Cabal's algorithm for locating the `.cabal` file.

 [1]: http://hackage.haskell.org/packages/archive/Cabal/1.16.0.3/doc/html/Distribution-Simple-Utils.html
Remove obsolete `autoload` statement
Remove obsolete comment and spurious top-level `4` value

The `4` seems to have been added in da1169202 by accident, as it
doesn't seem to serve any useful purpose.
Refactor `haskell-cabal-{compute-checksum,find-file}'

This commit adds proper docstrings and refactors the two functions in
terms of the new `haskell-cabal-find-pkg-desc' function added in
5b02b04. Because by using `haskell-cabal-find-pkg-desc' the
implementation becomes more faithful to the way Cabal locates `.cabal`
files, there are subtle semantic changes caused by this
commit. However, since the goal is to emulate Cabal as close as
possible, this should be alright.
Add optional DIR argument to `haskell-cabal-find-dir'

See also 8bc372d where a DIR argument was added to
`haskell-cabal-find-file' as well.
Add convenience command `haskell-cabal-visit-file'

`haskell-cabal-visit-file` allows for quickly locating and jumping to
the nearest .cabal file from a Haskell source buffer, you can now use
`M-x haskell-cabal-visit-file`; with a prefix argument the .cabal is
visited in the "other window".

This commit also updates NEWS and mentions this command in the Info
manual.

Note: This feature has been kept orthogonal to haskell-session.el, as
  it would only complicate an otherwise simple implementation. Should
  the need arise for a `haskell-session`-aware variant, we can always
  define a second version in `haskell-session.el` tightly integrated
  with the `haskell-session` framework.
Add section about rectangle commands to Info manual
Minor rewordings, typo fixes and @xref-fixes in Info manual

The use of @pxref/@xref/@ref is a bit cumbersome, as the result
differs significantly depending on whether html, info or tex output is
generated.
Remove trailing periods from NEWS items
Extend haskell-decl-scan.el to support PackageImports & SafeHaskell

This extends the `haskell-decl-scan-mode` parser to support the following two syntax extensions
for Haskell's import declarations:

- PackageImports
    http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#package-import

- SafeHaskell
    http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#safe-imports-ext
Add aliased `turn-{on,off}-haskell-doc` commands

This removes the irregularity, that `haskell-doc.el` didn't follow the
`turn-on-<module-name>` convention, but instead required
`turn-on-haskell-doc-mode`. The previous symbols are retained as
aliases for compatibility.
Clean up `:options` in `haskell-mode-hook' defcustom & add `:link`s

The various conditional `fboundp` statements are removed and replaced
by their evaluation result for Emacs 23/24. Moreover, two `:link` are
added to point to the relevant Info manual section and to the
docstring for `haskell-mode'.
Clean up docstrings for `haskell-mode' and `haskell-mode-hook'

The docstrings are made a bit more compact and point to the Info
manual for further details.
Pre-evaluate conditional `(fboundp 'help-buffer)' expression

This expression is always t for Emacs 23/24, so there's little
reason to have this for legacy support in there.
Fix to `turn-off-haskell-simple-indent' to actually work

When called non-interactively from Lisp, the argument to minor mode
functions needs to be a non-postive value in order to disable the
minor mode.