Added the FileLocator trait and two implementations.

This will make it easier to do relative addressing in a data-source independent way.
Added the CombinedFilter trait, which combines UnboundRecordFilter, a predicate and an Index predicate.

This is to support writing an "indexed" parquet Avro RDD, which can filter both records and index entries
at the same time.
Added new constructors to RangeIndex

These will allow initialization from File, InputStream, or ByteAccess values, the latter of which we'll need for the
indexed RDD.
Adding a FileLocator parameter to the ParquetPartition

This is to support reading from multiple Parquet files in the same RDD.
Added the S3AvroIndexedParquetRDD implementation.

Reads from an index file and loads ParquetPartition values, one for each
row group whose index entry passes the predicate given.

Right now, this only supports RangeIndex indices.