expand iteration syntax

* Named iterators, instead of re-using domain name:
  for ( id = ... )

* Iteration spec always starts with "each", even so:
  for ( id = each 2 #1 every 3 in ... )

* Hop and offset may be IDs:
  for ( id = each #1 every m at i in ... )

* Domain can be an INT:
  for ( i = each <?> in 10 )
Change syntax for iteration dimension

Previous syntax:
  for ( each #1 in X )
New syntax:
  for ( each in X{1} )
Dimension is optional; no dimension implies all dimensions.

Because dimension now belongs to domain spec, and we name iterator
explicitly, we can not allow multiple domains per iteration spec anymore.
Thus, the following does not make sense, and is not allowed:
  for ( x = each in X, Y )
improve iteration syntax

* Move "each" out of iteration spec:
   for each ( ... )
* Remove "=", add "takes":
   for each ( x takes 2 in ... )
* Add numerical range:
   1..10
* Remove "at", add range to domain:
   for each ( x in X{1:2..3} )
* Use range itself as domain:
   for each ( i in 1..10 )
CMake: add option for Bisonc++ to output detailed info
parser spec: comment on implied iteration dimension