Proper pretty-printing of dependent pairs

 * Dependent pairs are properly highlighted as either constructors or
   types
 * Names bound in dependent pair types show up as bound in their scope
Highlight variables from error context as bound
Show error contexts with pretty-printer
Execute JavaScript output after DOMContentLoaded

Previously, JavaScript generated for the browser would only execute on
the DOMContentLoaded event. We should also check if the browser is
already ready. We can do this with the following:

    document.readyState == "complete" || document.readyState == "loaded"
Merge remote-tracking branch 'upstream/master' into semantic-pprint

Conflicts:
	src/Idris/Delaborate.hs
javascript: remove redundant local constructors
Merge pull request #865 from david-christiansen/semantic-pprint

Improve pretty-printing
Add 'force' (opposite of 'lazy')

Used now in boolElim to ensure that thunks don't build up unnecessarily
(and this is the intended semantics of if...then...else anyway).
Add updateAt to Vect.
Report REPL errors in IDESlave with highlighting
Report errors loading files using semantic highlighting
Turn of width detection in batch mode

This should make Idris more script friendly, which is good for our test suite.
Use pretty-printer for errors in imports
Add 'Lazy' type for capturing delayed computations
Fix argument syntax to match what Idris actually wants
Make (++) right associative

Since (++) recurses on its left argument, (l ++ c) ++ r traverses l twice,
while l ++ (c ++ r) only once.

Furthermore, making (++) the same precedence as (::) enables the two to be
mixed.
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