Don't push to submodules on "./sync-all push"

A standard git push doesn't make sense for them
Check sub-modules are OK before pushing
Make :kind in GHCi do kind generalisation, always (Trac #7688)

See Note [Kind-generalise in tcRnType] in TcRnDriver, and
the notes in Trac #7688
Look through type synonyms when deciding if something is a type literal.

This is needed to make things like this work:

type N = 9
myValue = fromSing (sing :: Sing N)

If we don't look trough the synonym, we get an error that `SingI N` can't
be solved.
Squash some typos
Stop using the deprecated System.Cmd
Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghc
Build system tweak: Do the package checks at configure time

This removes the '.PHONY' rule, so means that "make" in a built tree
won't repeat the check.

We also now check the .cabal files for the executables as well as the
libraries.
Update submodule versions
Whitespace tweak
Build the stage0 ghc-pkg with Cabal

This solves the problem of how to define MIN_VERSION_base for
the binary package.

Also fixed a couple of build system bugs along the way.
Fix build on Windows: We don't build terminfo on Windows
Add a missing $ to a dependency
Define utils/ghc-pkg_dist_PROG correctly for Windows
Build fix for dyn way on Windows; patch from nus
Small refactoring; patch from nus
Update submodules
iOS patch no 1: Select operating system; from StephenBlackheath
iOS patch no 2: remove obsolete CROSS_COMPILE variable; #7699

From StephenBlackheath
Add missing ;; in aclocal.m4