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.