use parse failure/success to classify inputs as decl or stmt

the previous way to check for keywords (some were missing) can be
wrong if you have a statement like let classFoo = 1.
support messages for CompletionRequest/reply (#8).

does not generate any completions for now, and I'm not sure
if the CompletionReply ends up being formatted correctly.
Merge https://github.com/gibiansky/IHaskell
don't hardcode ghc version reported to IPython
generate completions on the ghc-side, doesn't get interpreted correctly yet

see note in Completion.hs
list modules used in cabal file (needed later if it comes to cabal sdist)
use package system-argv0 to find IHaskell binary instead of $PATH

This allows you to for example use ./dist/build/IHaskell/IHaskell.
However, things can still be confusing in the sense that your ihaskell
might be using code not from the particular binary you started the
notebook with because there is still only one
.config/ipython/profile_haskell/ipython_config.py
Merge pull request #17 from aavogt/master

a bunch of changes