Generalize list eliminator

Generalize the list eliminator to return any type, rather than only the type of the elements in the list. This matches the behavior of other eliminators, such as maybe and either.
Add laziness to values which aren't evaluated in all branches of a function.

Most notably, this includes making (&&) and (||) lazy in their second
arguments, allowing conventional short-circuiting behavior.
Correspondingly, the foldable functions `and` and `or` now short-circuit
as well by applying foldables which contain lazy Bool values. Unlike
Haskell, short-circuiting occurs from right to left on lists,
because as Idris is a strict language, `foldr` evaluates from the inside
(right side) out.
Make `and`, `or`, `any`, and `all` short-circuit from left-to-right, as is more natural.
Generalize list eliminator

Generalize the list eliminator to return any type, rather than only the type of the elements in the list. This matches the behavior of other eliminators, such as maybe and either.
Add laziness to values which aren't evaluated in all branches of a function.

Most notably, this includes making (&&) and (||) lazy in their second
arguments, allowing conventional short-circuiting behavior.
Correspondingly, the foldable functions `and` and `or` now short-circuit
as well by applying foldables which contain lazy Bool values. Unlike
Haskell, short-circuiting occurs from right to left on lists,
because as Idris is a strict language, `foldr` evaluates from the inside
(right side) out.
Make `and`, `or`, `any`, and `all` short-circuit from left-to-right, as is more natural.
Add documentation to Prelude functions
Merge branch 'master' of https://github.com/bmsherman/Idris-dev

Conflicts:
	libs/prelude/Prelude/Applicative.idr
	libs/prelude/Prelude/Bool.idr
	libs/prelude/Prelude/Foldable.idr
	libs/prelude/Prelude/Maybe.idr
Make Prelude.Applicative.when implementation cleaner.
Make Prelude.Applicative.when implementation cleaner.
Merge branch 'master' of https://github.com/bmsherman/Idris-dev
Fix implementation of Prelude.Applicative.when
Make Ctxt lookups more straightforward in ASTUtils.
Update comments.
Add superclass info to ClassDoc and output it in pprintDocs (:doc command)
Change impl argument to a pretty printing opt record
Add ppOptionIst function.
Disable record003 in javascript tests

This probably should work, but is currently breaking travis so disabled
temporarily.
Merge branch 'master' of github.com:idris-lang/Idris-dev
Merge pull request #1174 from bmsherman/master

Add laziness and some documentation