Add failing test case for a traversing for loop
Merge branch 'master' into traversing-for-loops
Implement simple traversing for-loops
Add more complex traversal test case (failing)
Add another, simpler, failing testcase for traversal
Complete simple for-traverses (requiring use of only `map`)

Fixed a problem caused by failure to recognize where `map` usages
were occurring due to the variety of ways that the AST can be
changed by implicit conversions / arguments. Now simple for-
traverses should be working, but more complex traverses requiring
`flatMap` do not.
Support nested for-comprehension traverses.
Use Unapply to extract monad instance, to allow using monad syntax with e.g. State[S, A]