Set IDRIS_ENABLE_STATS in config.mk instead of in idris_stats.h. stats are not supported on Arduino. Also make sure that when IDRIS_ENABLE_STATS is not set, the idris_stats.h does not pull in time.h as this header is not available on the Arduino platform.
If EXIT_SUCCESS and EXIT_FAILURE are not defined (as is the case on Arduino), explicitly define them using standard values (EXIT_SUCCESS == 0, EXIT_FAILURE == 1). In the long term the RTS should be modified to not call exit directly at all since it does not make sense on embedded platforms. The calls to exit(EXIT_SUCCESS) and exit(EXIT_FAILURE). Should be replaced by macros that do something sensible on the platform.
Added rts/arudino/idris_main.c. It is similar to the standard idris_main.c except it does not attempt to handle argv/argc and it also calls the Arduino init() function.

Additionally, all the rts .c files are now included in the data-files section of the idris.cabal file. When using Idris to cross-compile, we need to recompile the RTS for the target platform. We do not know what platforms might be targeted in advance, so we need to have all the RTS source files available at compile time.
Merge remote-tracking branch 'upstream/master' into fix/master/arduino
Prevent REPL from compiling to source file
Factor out LLVM backend

The LLVM backend is now available as a seperate project on github.
Adapt travis testing
Only build llvm backend if testing llvm
Make sure we use the official version of idris-llvm for testing
Introduce class Negatable
Rename the Negatable class to Neg
Make unary "-" use the Neg typeclass
Add support for the primitive prim__negFloat : Float -> Float
Rename float negation primitive for more uniformity
Add test for new float primitive prim__negFloat
Make output from :t name annotate with terms

This lets IDEs do things like normalise the output from :t. Previously,
it worked for :t of a term, but not :t of a name.
Pretty-printing of implicit args to (=)

Now, the pretty-printer respects the "show implicts" option for
propositional equality. Demo:
```
λΠ> (a : Type) -> (n,m,o : Nat) -> (xs : Vect n a) -> (ys : Vect m a) -> (zs : Vect o a) -> xs ++ (ys ++ zs) = (xs ++ ys) ++ zs
(a : Type) ->
(n : Nat) ->
(m : Nat) ->
(o : Nat) ->
(xs : Vect n a) ->
(ys : Vect m a) -> (zs : Vect o a) -> xs ++ ys ++ zs = (xs ++ ys) ++ zs : Type
λΠ> :set showimplicits
λΠ> (a : Type) -> (n,m,o : Nat) -> (xs : Vect n a) -> (ys : Vect m a) -> (zs : Vect o a) -> xs ++ (ys ++ zs) = (xs ++ ys) ++ zs
(a : Type) ->
(n : Prelude.Nat.Nat) ->
(m : Prelude.Nat.Nat) ->
(o : Prelude.Nat.Nat) ->
(xs : Prelude.Vect.Vect n a) ->
(ys : Prelude.Vect.Vect m a) ->
(zs : Prelude.Vect.Vect o a) ->
(=) {A = Prelude.Vect.Vect (Prelude.Nat.plus n (Prelude.Nat.plus m o)) a}
    {B = Prelude.Vect.Vect (Prelude.Nat.plus (Prelude.Nat.plus n m) o) a}
    (Prelude.Vect.(++) {m = n}
                       {a = a}
                       {n = Prelude.Nat.plus m o}
                       xs
                       (Prelude.Vect.(++) {m = m} {a = a} {n = o} ys zs))
    (Prelude.Vect.(++) {m = Prelude.Nat.plus n m}
                       {a = a}
                       {n = o}
                       (Prelude.Vect.(++) {m = n} {a = a} {n = m} xs ys)
                       zs) : Type
```

This fixes #1410.
Merge pull request #1541 from david-christiansen/pprint-more-annots

Pretty-printer improvements
Merge branch 'master' of github.com:markuspf/Idris-dev into markuspf-master

Conflicts:
	libs/prelude/Prelude/Classes.idr
	src/Idris/ParseOps.hs
Add backend notes to CHANGELOG