Fix some bugs with cforRange.

This commit makes cforRange a bit less ugly, and supports negative
iterating by a negative step.

The macro needs to be documented. Here are the current assumptions:

  1. (a to b) and (a until b) are supported for any tree types.

  2. (a to b by c) and (a until b by c) are only supported when c is
     a literal tree (a known constant stride).

  3. ranges that don't fit these two categories are not supported

Unsupported ranges will fall back to using:

  r.foreach(body)

This will still be correct but will be much slower. In these cases
the macro will print a warning.