Minor cleanup of how functions are specified.

Define a type for an anonymous function, and make it have a single statement
instead of a list of statements.
Wrote an apply function for sketch functions.

And used it to clean up evaluation of sketch programs.
Add some support for global variables.
Implemented support for function calls.
Use ReaderT for output type in the Generate monad.
Put infrastructure in place for emitting new declarations in generate.
Added syntactic support for generators.

We don't implement them properly yet.
Implemented support for generator functions.
Added support for the empty statement.

Also initialize otherwise uninitialized bit arrays to 0.
Updated status of a few more test cases.
Add support for types involving global variables.
Added support for  variable size holes.

And also default to 5 bits for unspecified size holes.
Added support for the == operator.
Added support for while statements.
Added support for the pre-increment statement.
Added support for for statements.

It's a bit messy right now, but good enough?
Added support for ~ and {|} operators.
Added 'true', 'false', && and ||.