change intermidiate representation of for loop enumerators

Encode values into real trees rather than non-tree case classes.
This is needed for re-usability of desugaring code between quasiquotes
and parser.
move for loop desugaring into tree gen
add syntactic combinators that represent enumerators
implement inverse transformation to mkFor

This effectively reconstructs a sequence of enumerators and body
from the tree produced by mkFor. This lets to define bi-directional
SyntacticFor and SyntacticForYield constructors/extractors to work
with for loops.

Correctness of the transformation is tested by a scalacheck test
that generates a sequence of random enumerators, sugars them into
maps/flatMaps/foreach/withFilter calls and reconstructs them back.
add support for for loops and for enumerators to quasiquotes

1. q"for (..$enums) $body", q"for (..$enums) yield $body"

2. fq"..." quote to construct/deconstruct enumerators