fix #6364: float ranges honor length if specified

This is a minimal fix to #6364 (it makes `length((1:64)*(pi/5)) == 64`).  In particular, `range(a, st, len)` should produce a range with the given `len`.

The fix still isn't perfect, because if the length of the range is not exactly representable in the requested floating-point type, then it will be converted to a `FloatRange` with a rounded length.     Ideally, we should have a `FloatRange1` range type in which the length is an `Int` and there is no `divisor` field, in order to represent floating-point ranges with a specified length.   But I feel that adding yet another `Range` type should be a subsequent PR (and might wait for 0.4).