FloatRange type: correct/intuitive floating-point ranges (no syntax).

This addresses the core behvaioral problems of #2333 but doesn't yet
hook up the colon syntax to constructing FloatRange objects [#5885].
FloatRange: hook new type up to colon syntax [fixes #2333].
FloatRange: slightly more conservative test for lifting in frange.

There's a slight chance that computing `stop` with integers and then
converting to floating point would work but doing to computation in
floating point would not give the correct answer. This tests actual
values – with the correct type – that will be used.
FloatRange: work around for #5885 – temporarily move colon defintion

Obviously we don't want to leave things like this, but with this
work around, we can merge the FloatRange branch and figure out the
root cause of #5885 later.