Allow functions to be declared as error handlers
Fix comment syntax for highlighting
Add ErrorHandler Binary instance
Proper checking for language extension
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
Simplify logic for setVerbose in REPL
Added inputIdrisListing command to load external files.
Cosmetic tweak in interactive editing
Corrects infinite stream syntax [start ..]. Closes
idris-lang/Idris-dev#706
Induction on nat working
Improvment on readability and usability of induction and eliminators.
Fixed reflection induction tactic
Readded solveAll
Added contributing guidelines.
Recursive constructor disjointness + cleanup
Default superclass intances

This allows code like:

    data Identity i = Id i

    class Functor (f : Type -> Type) where
      map : (a -> b) -> f a -> f b

    class Functor f => Applicative (f : Type -> Type) where
      instance Functor f where
        map f fa = ap (pure f) fa
      pure : a -> f a
      ap : f (a -> b) -> f a -> f b

    instance Applicative Identity where
      pure = Id
      ap (Id f) (Id a) = Id (f a)

    data Nat = Z
             | S Nat

    x : Identity Nat
    x = map S (Id Z)

Note the default Functor instance defined as part of the Applicative
class. This allows the Identity data type to omit an explicit Functor
instance and one gets defined from the Applicative instance.

This feature is largely copied from the approach done in She:

https://personal.cis.strath.ac.uk/conor.mcbride/pub/she/superclass.html

It basically does macro expansion of each default superclass instance
(e.g. Functor) when the containing class (e.g. Applicative) gets an
instance defined. Currently, default superclass instance definitions
are not type-checked, only their macro expansions are.

Default superclass instances are limited to being defined for types
which are syntactically equal to one of the superclass constraints.
Merge pull request #701 from jfdm/contrib/idrislang.sty

Added inputIdrisListing command to load external files.
Merge pull request #711 from ahmadsalim/bug/fixenumfromsyntax

Corrects infinite stream syntax [start ..]. Closes