Use KryoSerializer with embedded Avro objects. New sorting/concat options. SAM support.

o Switch to KryoSerializer with registered handlers for serializing Avro objects
o Add option to sort all reads before writing ADAM/Parquet files
o Add option to concatenate all partitions into a single partition before saving
o Update the bam2adam command to work with both SAM and ADAM files
o Remove the AvroWrapper class as it's no longer needed
o Clean up Parquet commandline options
Merge pull request #7 from massie/matt-s

Use KryoSerializer with embedded Avro objects. New sorting/concat options. SAM support.
Small fix to single partition functionality
Fixed projection object. Was previously causing all projections to contain the empty set.
Merge pull request #8 from fnothaft/adam-projection-fix

Fixed projection object.
Added AdamSparkCommand trait so that AdamCommands can be strung together while using the same Spark context and Hadoop Job config. Updated existing commands to use new trait.
Added output writer format for Hadoop-BAM that is compatible with Spark writer format.
Added comment to explain/justify code smell.
Merge pull request #9 from fnothaft/adam-bam-writer

Added output writer format for Hadoop-BAM that is compatible with Spark
Split reads2ref into read to pileup and aggregation operation.

Created new command to handle aggregation. Aggregation can also be
done inside reads2ref command with -compress switch.  Additionally,
fixed bug with base quality.
Upgrade from Hadoop-BAM 5.3 to 6.0

This commit removes the checked in local maven repo and replaces
it with a remote private one. This helps to avoid checking large
files into this git repo.

In order to reduce dependencies, the BCF/VCF code has been removed
from Hadoop-BAM. I've talked with the Hadoop-BAM team about how
to publish maven artifacts that are compatible with all versions of
Hadoop. In the future, we will remove the Hadoop-BAM source
altogether and simply depend on a published artifact.
New AdamContext and RichAdamRecord decorators. New RDD methods. Schema fixes.

o Created a new AdamContext decorator for SparkContexts with methods for
  creating new ADAM RDDs from SAM/BAM or ADAM files
o New methods added to RDDs created by ADAM for aggregating pileups, sorting, and
  saving. Makes it easy to compose transformations, e.g. rdd.sort().markDups().save()
o Added new 'RichAdamRecord' decorator for ADAMRecords with useful utility methods
o Fixed a 1-off bug in mateReferencePosition. All offsets are now 0-based.
o Removed the 'end' field from an ADAMRecord and added 'mateReferenceId'
Fix case-sensitivity issue with last commit
Exclude the Eclipse Java development tools from shaded jar
Improve the performance of ReferencePosition.compare()
Remove the Hadoop-BAM source and use new binary artifacts instead

The Hadoop-BAM team is now publishing Maven actifacts for their
project so there's no reason to have the source in the ADAM repo
anymore. The latest version of Hadoop-BAM fixes a bug when splitting
BAM files and also provides Hadoop 1/2 support via reflection.
Split bam2adam command into 'bam2adam' and 'transform' commands

Previously, the 'bam2adam' command read BAM files using a Hadoop FileInputFormat,
performed one or more transforms and then save the transformed data to ADAM
format. This required the FileInputFormat to deal with the BGZF block compression
markers to find splits which was too error prone. We may revisit this in the
future.

Now, the 'bam2adam' command reads a BAM file locally using the SAMFileReader in
samtools and saves the ADAM/Parquet to the URI specified (e.g. hdfs://, s3://, local).
This command will be improved in the future batch entire directories of files
and support partitioning.

The new 'transform' command reads an ADAM/Parquet file, performs one or more
transformations in-memory and then saves the result to a new ADAM/Parquet file.

Additionally,
o Updated the version of samtools from 1.93 to 1.96-1534 per Chris Hartl's request
  to support his work on Base Quality Score Recalibration
o Dropped dependencies on Hadoop-BAM and Picard
Make the samtools validation 'lenient' by default
Make 'bam2adam' multi-threaded. Changed default block size to 128mb.

The commit adds two new options to 'bam2adam': -num_threads and -queue_size.
Each thread requested will write to a separate Parquet partition. Adding threads
will improve thoroughput to a point. However, each thread has its own ParquetWriter
which uses -parquet_block_size of memory for caching alone (not counting other
book-keeping overhead). Watch your memory use and GC to help with tuning. The
queue helps prevent the SAM/BAM file reader from blocking when the writers are
flushing blocks to disk.

As reads are processed, the number of reads and the size of the queue are printed.

The default block size has been reduce to 128mb. A larger block size can help
improve read performance at the cost of write performance.
Change bam2adam arguments from vals to vars.