Show Git revision IDs in pre-release versions

A new Cabal flag `release` is added, and is off by default.

When the flag is on, version strings show the version from
idris.cabal. When the flag is off, version strings are given a
prerelease suffix. If the build system can determine the short Git hash
for HEAD, then this is the suffix. If it cannot, then the suffix is a
generic "-PRE" suffix.
Add a function for dealing with absurdity

Now, if a type is known to be uninhabited, `absurd` will immediately
find the proof of uninhabitedness and apply `FalseElim` to it. This can
inhabit any type.

Example:

    foo : Fin Z -> String
    foo f = absurd f
Monad/Applicative/Functor instances for Eff

So now you can use it in a Monad transformer if you really want to.
Add more isomorphisms

Specifically:
 * Congruence over products and sums
 * Congruence over Maybe
 * Demonstrate isos of Maybe using sum and unit isos
Weakening and shifting of Fins

Add two functions:
 * weakenN weakens a Fin n m times
 * shift adds a Nat to a Fin, extending the bound
Add isomorphisms for Fin
Make spacing consistent
Make :info show default superclass instances
Add 'byReflection' tactic

Similar to 'applyTactic', but its argument is a reflection function
which builds a tactic by reflection on the goal.
Explain strange case in reflectListEffElem!
Merge branch 'master' of github.com:idris-lang/Idris-dev
Forgot to add Effect.Monad...
Make dumping of default superclass instances consistent
Cut off fruitless proof search earlier

In particular, trying to unify a function type with a constructor is
never going to work, so abandon as an unrecoverable error. This means
arity-based unification errors no longer make the elaborator search for
ages.
Merge pull request #743 from david-christiansen/show-git-in-version-2

Show Git revision IDs in pre-release versions
Merge pull request #744 from Melvar/executor-null-string

Allow the executor to call foreign functions that return possibly-NULL strings
Merge pull request #746 from david-christiansen/absurdity

Add a function for dealing with absurdity
Merge pull request #748 from david-christiansen/feature/isomorphisms

Add more isomorphisms
Merge pull request #749 from puffnfresh/default-superclass-instances

Make :info show default superclass instances
Rely on bash being bash instead of env being GNU