Add a Cabal library

Moves Core to Idris.Core

The library allows using the Idris' backend from other Haskell code.
For example, we could use Idris as a general TT compiler with multiple
backends:

    run :: Idris ()
    run = do
      let ddir = "libs" -- TODO: Use Idris.Util
      addImportDir $ ddir </> "prelude"
      addImportDir $ ddir </> "base"
      elabPrims
      _ <- loadModule stdout "Builtins"
      _ <- loadModule stdout "Prelude"
      pterm <- fmap (flip delab program) getIState
      elabDecls toplevel [makeDecl pterm]
      compile ViaNode "wow.js" runProgram

Everything but Main, Util, Pkg and Paths_idris is currently exported.
Merge branch 'master' into cabal-library

Conflicts:
	idris.cabal
Move externally useful Util.System functions to IRTS.System

Functions moved:

* getTargetDir
* getCC
* getLibFlags
* getIdrisLibDir
* getIncFlags
* getMvn
* getExecutablePom
Add syntax for Agda-style reasoning over preorders
Add a representation of isomorphisms and some useful base isos
Mention preorder reasoning in CHANGELOG
Add test for preorder reasoning syntax
List modules in dependency order
Add Syntax namespace to cabal file
Fix stupid typo
on error, report the column, as well as the line number in the ideslave mode.

this was suggested in #312 and I think it is a good idea
Add HPC files to .gitignore

HPC is used for coverage checking Haskell code
Merge pull request #730 from david-christiansen/feature/isomorphisms

Syntax for preorder reasoning over equality and isomorphisms
Merge pull request #731 from hannesm/report-column-on-warning

on error, report the column, as well as the line number in the ideslave ...
Merge pull request #735 from david-christiansen/gitignore-updates

Add HPC files to .gitignore
Add campsite rule to CONTRIBUTING.md
Merge pull request #740 from david-christiansen/campsite-rule

Add campsite rule to CONTRIBUTING.md
Merge branch 'master' into cabal-library

Conflicts:
	src/Idris/DataOpts.hs
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.
Fix LLVM compilation error because of moved `getCC`