Introduce `blockFold`, between `procFold` and `stmtFold`.
Don't rely on stmtFold to insert preceding statements.
Inline unnecessary let-bindings in stmtFold.
Implement copy-propagation during constant folding.
Eliminate negations by algebraic rules.
Bugfix: const-fold ExpIndex at the right type.

This bug hasn't matttered because the RHS of ExpIndex is always ExpToIx,
and constant-folding that ignores the type context. But let's get it
right anyway.
Merge remote-tracking branch 'refs/remotes/upstream/master' into index-type

Conflicts:
	ivory-opts/src/Ivory/Opts/ConstFold.hs
concrete syntax: remove duplicate syntax for const refs.
concrete syntax: todo note.
concrete syntax: plumb src locations.
concrete syntax: decorate all top-level decls with line pragmas.
cabal: cleanup.
build: add imports for 7.8.3.
concrete syntax: add floats, doubles, string literals.
Merge remote-tracking branch 'upstream/master' into index-type
Merge pull request #14 from gridaphobe/index-type

Track index bounds in the types of Ivory procs
Merge remote-tracking branch 'upstream/master' into ivory-model-check