Run the iterable of State's in sequence, only returning the new states.
IList<S> executeSeq(Iterable<State<S, dynamic>> arr) => arr.map(run).map((t) => t.second).toIList();