Add 'Lazy' type for capturing delayed computations
Remove | annotation, make Force/Delay implicit

Laziness is now fully typed.
Remove EVALs from generated code

Except where explicitly required by a Force
javascript: strTail could not be optimized properly
javascript: fix detection of constant constructors
javascript: removed unoptimizable JSRaw
Merge branch 'master' of github.com:idris-lang/Idris-dev into typed-laziness
Merge pull request #887 from raichoo/typed-laziness

Typed laziness
Merge branch 'typed-laziness' of github.com:idris-lang/Idris-dev into typed-laziness
Remove EVAL from APPLY

Also slightly reduce size of EVAL/APPLY functions
javascript: disable all optimizations (temporary)
javascript: add noop
javascript: true else branch
Make EVAL and APPLY smaller

(Also shortcut inlining for boolElim, until we make it more general,
which is the source of a lot of the cases in EVAL in practice)
Merge pull request #889 from raichoo/typed-laziness

Disable all optimizations (keep travis quiet)
Update CHANGELOG