Adding RichADAMRecord.referenceLengthFromCigar

The new referenceLengthFromCigar method (and its associated ADAMRecord method, 'referenceLength')
is an implementation of a method which counts the length of an aligned read against the reference
sequence. This is useful because rec.start + rec.referenceLength is a logical "end" coordinate
to be used for testing overlap of an ADAMRecord against a reference range.
Merge pull request #263 from genomebridge/tdanford/referenceLengthFromCigar

Added AdamContext.referenceLengthFromCigar
Removed extra command 'BuildInformation' from ADAMMain
Merge pull request #266 from karenfeng/command-cleanup

Removed extra command 'BuildInformation'
ADAMFlatGenotype is a smaller, flat, simpler version of a genotype schema.

Also:
1. Added support for missing genotypes in the VCFLineConverter for
   ADAMFlatGenotype.
2. Added a ReferenceMapping for the ADAMFlatGenotype
3. the flat genotype converter uses multiple writers for smaller output
   files.
4. Don't ignore VCF files in .gitignore
Merge pull request #259 from genomebridge/flat-genotype-rebased

ADAMFlatGenotype is a smaller, flat version of a genotype schema
Utility classes for Parquet reimplementation in Scala.

The following changes were made as part of this commit:

* Added a dependency on the AWS Java SDK.

This dependency is listed as 'provided', because the AWS SDK for Java adds 8k+ classes,
which pushes our uber-jar over the standard 65k file limit in the Zip archive.

* Added ByteAccess trait and implementations.

ByteAccess is a trait representing "sources of bytes" for which random access is available,
e.g. local files, S3, etc. This is going to be used to wrap different data storage back-ends,
for raw byte access and allowing us to go around the hadoop library itself.

* Added SerializableAWSCredentials is an AWSCredentials which is Serializable.

We're going to need to pass around (serializable) credentials for S3, in order to
implement our ParquetRDD that reads directly from S3.

* Added CredentialsProperties encapsulates reading AWS credentials from configuration.

This is a wrapper class, designed to allow us to recognize and retrieve credentials from
the environment, config files, or other sources.

* Added FileLocator and implementations.

FileLocator, and its implementations, are a common wrapper around local Files, classpath locations,
bucket/keyname pairs in S3, and static byte arrays (for testing).  This is a way (also serializable)
for naming the location of parquet files and indices in different systems.
Merge pull request #264 from genomebridge/parquet-utils-rebase

Parquet-related Utility Classes
Scala reimplementation of the Parquet footer parsing.
Parquet and indexed Parquet RDD implementations, and indices.

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