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 passing on to GHC
Parse: Don't return [] when getModuleDeps fails. exit 1 instead.
BuildPlan: Add TODO about readySet == [] in new
BuildPlan: Don't assume 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.