basic testing framework
frontend: postpone LLVM IR verification to after file output
CMake: make test depend on compiler frontend
IR gen: multi-dimensional stream arithmetic
test: use multi-dimensional stream arithmetic
frontend: a better status message
type check: store types in AST, duplicate AST for type-checked functions
IR gen: iteration
IR gen: transpose
forgotten file
type check: improve handling of streams

* Reduce single-valued streams to scalars
* Reduction expression: check that output type equals input type
IR gen: reduction
test: simple reduction test, remove prototype test