Add aggregation and display of metrics obtained from Spark

This change adds an new command-line option called "print_metrics" which causes a listener to be registered with Spark, which accumulates metrics when each task and stage end. When a command is complete the metrics are logged to stdout.
Running ./scripts/format-source on files checked-in by previous commit (498d8377651d21e86ff642071e6c9b1d585db4cc)
Logging metrics to the Spark logger instead of stdout
Set a larger output buffer for printing metrics
Changes based on review of PR 292 (Add aggregation and display of metrics obtained from Spark)
Removed btc ascii table library and added class to render ascii tables
Fix broken link to ADAM specification for storing reads.
Merge pull request #295 from roryk/master

Fix broken link to ADAM specification for storing reads.
Merge pull request #293 from nfergu/spark-metrics

Add aggregation and display of metrics obtained from Spark
Remove reference to unused Maven repository
Changing to AvroParquetOutputFormat.
Added logging to partitioner for diagnosing skew issues.
Add Beacon's AlleleCount

This is the preprocessing step of AMPLab Beacon. It parses an ADAM
variant and creates a text file with counts of allele frequencies.
Merge pull request #301 from genomebridge/beacon-allele-count

Add Beacon's AlleleCount
Adding intersection to reference region class.
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
Updating the tests to run against HTTP