CDK-177: Add PathIterator.

Given a FileSystem and an Iterable of Paths, PathIterator will yield all
non-hidden file Paths under its set of directories. PathIterator and
FileSystemPartitionIterator make it easy for FS views to iterate through
all files in a given MarkerRange.

This commit also changes MultiFileDatasetReader's constructor to use an
Iterable, i.e. PathIterator, rather than a List and adds checks for
nulls in other FS reader classes.
CDK-177: Moving ReaderWriterState to SPI.
CDK-177: Adding FileSystemView implementation.

FileSystemView implements a View defined by a single MarkerRange. It
implements all View methods other than union(View). FileSystemDataset
now delegates all View methods, like newReader, to its internal
unbounded FileSystemView.

Existing Dadtaset tests are passing, but new tests for range limiting
have not been added for FileSystemView.