adding backtracking functionality with snapshot/release semantics.
updating language definition to support list assignment
also generalizing alternative lookahead code as an active pattern