Adding fixed depth prefix trie implementation, as part of read error correction work.
Merge pull request #268 from fnothaft/prefix-trie

Adding fixed depth prefix trie implementation
Use maven license plugin to ensure source has correct license
Merge pull request #278 from massie/license

Use maven license plugin to ensure source has correct license
Parquet and indexed Parquet RDD implementations, and indices.

* Scala reimplementation of the Parquet footer parsing.

* Implementations of two Parquet-based RDDs

AvroParquetRDD.scala contains two RDD implementations around Parquet files.  The first,
AvroParquetRDD, reads a single Parquet file (containing an Avro schema) and partitions the RDD
based on the row groups of the file.

The second, AvroIndexedParquetRDD, is an implementation that reads an index across a set of
parquet files, determines (according to the predicate contained in CombinedFilter) which row groups
in which files are relevant to the query, and produces an RDD whose partitions are in 1-1 correspondence
with the matching row groups from the index.

The parquet_reimpl/index package contains the code necessary for reading and writing indices.

* Adding two CLI commands, including an index generation command.

Adding two new CLI commands:
1. IndexFlatGenotype, which reads in a flat genotype Parquet file, and produces the index for that file.
2. the PrintParquet, which reads a Parquet file and prints out a limited number of entries form the file.

(at the moment, the latter only supports ADAMFlatGenotype)

* Implemented ID/Range indices on Parquet files.

Added an IDRangeIndexGenerator implementation.
Updating IndexFlatGenotype to generate the IDRangeIndex entries.
Updating S3AvroParquetRDD to use the IDRangeIndex
Fixed the tests for S3AvroIndexedParquetRDD
Removed two old test suites.
Adding ParquetLister tests.
Added explanatory comments to CombinedFilter
Deleted HashIndex, which was old and wasn't being used.
Adding comments to AvroIndexedParquetRDD
Making IndexFlatGenotype Spark'd