Remove range methods from View.

This commit removes the range-specific methods from View. Rather than
commenting them out, this moves them to a SPI package-private RangeView
interface so that the tests (TestRangeViews) can still be included. This
commit also updates the view implementations and their tests.

All view implementations now return the appropriate type rather than
View.

Some tests are moved to the same package as the class being tested to
allow use of package-protected view methods.