The rationale behind it is that in all cases range_type<> was used as
ring_type<>. There was a specialization for Box defining box_view<> but
this was semantically different than accessing a ring of geometry.
detail::as_range() was taking a range type and returning a reference to
this range which was inconsistent with ring_return_type<>.
Remove unneeded begin() and end() functions in non-mutable ranges
closeable_view<> and detail::normalized_view<>.
Add specialization of ring_type<> for linestrings since there is already
specialization of ring_return_type<>.
Fix some compilation errors.
A robust type is integer for float/double. The rescaled points will only
be used for side-information and equality and distance-comparisons, not
to calculate the intersection points themselves.
Currently the code is #ifdefed