Added cforRange and cforRange2

These macros are a bit nicer to use than cfor, although they are also
less flexible. The basic idea is:

    cforRange(0 until 100 by 4) { i =>
      ...
    }

becomes:

    var i = 0
    while (i < 100) {
      ...
      i += 4
    }

The following kinds of ranges are supported:

    start until limit
    start until limit by step
    start to end
    start to end by step

Non-literal ranges are also supported, but will issue a warning, since
they can be slower. The warning may need to be removed, we'll see.

The cforRange2 macro is similar:

    cforRange2(1 to 5, 2 to 4) { (i, j) =>
      ...
    }

becomes:

    cforRange(1 to 5) { i =>
      cforRange(2 to 4) { j =>
        ...
      }
    }

and then:

    var i = 1
    while (i <= 5) {
      var j = 2
      while (j <= 4) {
        ...
        j += 1
      }
      i += 1
    }

That's all there is to it.
Added cforRange and cforRange2

These macros are a bit nicer to use than cfor, although they are also
less flexible. The basic idea is:

    cforRange(0 until 100 by 4) { i =>
      ...
    }

becomes:

    var i = 0
    while (i < 100) {
      ...
      i += 4
    }

The following kinds of ranges are supported:

    start until limit
    start until limit by step
    start to end
    start to end by step

Non-literal ranges are also supported, but will issue a warning, since
they can be slower. The warning may need to be removed, we'll see.

The cforRange2 macro is similar:

    cforRange2(1 to 5, 2 to 4) { (i, j) =>
      ...
    }

becomes:

    cforRange(1 to 5) { i =>
      cforRange(2 to 4) { j =>
        ...
      }
    }

and then:

    var i = 1
    while (i <= 5) {
      var j = 2
      while (j <= 4) {
        ...
        j += 1
      }
      i += 1
    }

That's all there is to it.

Conflicts:
	core/src/main/scala/spire/syntax/Syntax.scala
Merge remote-tracking branch 'origin/master' into topic/matrix-wip