Rename SymbolTable to SemanticState
Semantic check after WITH
Change some Seq to Vector
Record pass number in SemanticState
Run multiple semanticCheck passes
Replace -> with >>= in semantic check
Adds experimental StateWithErrors monad
Introduces STErr monad

o STErr is over state, errors, and contained value
o join
o lifting of helper functions
o supports for-comprehensions
o some haskell-style operators
Refactors STErr to use errors as only contained state

o Removes STErrState in favour of (errors, value) tuples
o Adds addErrors
o Discards previusly used extra (state: S)
o Renames return to init, moves lift to STErr