Don't append "-o a.out" when we don't want to build any executable.

This behaviour

  * caused parmake / ghc to compile with only one thread in certain
    situations

  * hid the bug that using only ghc -M and then ghc -c per module,
    parmake *cannot* detect whether an external (e.g. used package)
    module (interface file) changed when doing an incremental build
    (ghc itself can detect that).
    We will have to detect this by inspecting .hi files, like ghc does.
Don't pass --help and -V flags to GHC.

This looked like a good idea first, but sometimes we really want to talk to parmake.

For determining the ghc version as cabal does, passing through --numeric-version is enough.
Re-organize option passing to GHC.
Parse: Don't return [] when getModuleDeps fails.

Exit with an error instead.
BuildPlan: Add TODO about readySet == [] in new.
BuildPlan: Don't assume that Makefile is sorted.
BuildPlan: error on target with empty dependencies.
Use -include-pkg-deps to also depend on system and package .hi files.

This way we can detect correctly when external code changes.

For a case where this failed before, see https://github.com/JohnLato/parmake-bug
.

This also needs changes to:

- BuildPlan.new:

  When determining the initially buildable modules, before we chose the ones
  with exactly one dependency.  Now, we don't count external files into those
  dependencies, as they do not need to be built.

- Parse:

  We need to run ghc -M twice:

  Once for getting the normal Makefile-style dependencies, and once to get *all*
  dependencies (using -include-pkg-deps).  From their difference, we can obtain
  the set of external dependencies.  We now also have a `Dep` type to contain
  these internal and external dependencies.
Don't use assertions for control flow or error handling!

They are REMOVED when compiled with -O which is the cabal default.
Bump version.