base/range.jl: generic changes to pave way for FloatRange support.
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].