CDK-177: Add reusable AbstractRangeView.

This commit separates out the reusable range code from the
FileSystemView so it can be reused. The AbstractRangeView provides most
View methods, but requries that subclasses implement newLimitedCopy that
instantiates new copies with more limited ranges.