Modified Casava18ReadNameEncoder to correctly display filter status.  Previously it was treated as "passing filter" when in fact Illumina's intended meaning in the read name is "is filtered" (i.e. does *not* pass filter).  The enum for the field has also been renamed to more accurately reflect its content.
Don't commit the ipr file!!
Merge pull request #43 from broadinstitute/origin/kt_fix_fastq_pf_flag

Modified Casava18ReadNameEncoder to correctly display filter status...,
First version of a large-memory fifo buffer class.
set the mate cigar when merging supplemental alignments
Merge pull request #44 from broadinstitute/nh_bwa_mem_output_suppl

set the mate cigar when merging supplemental alignments
Modified Casava18ReadNameEncoder to correctly display filter status.  Previously it was treated as "passing filter" when in fact Illumina's intended meaning in the read name is "is filtered" (i.e. does *not* pass filter).  The enum for the field has also been renamed to more accurately reflect its content.
Correctly parse newer Illumina read names (since CASAVA 1.8)

While the default READ_NAME_REGEX will correctly parse both old and new
Illumina read names, the optimized parse using split() only correctly
parses old names.  Since the default regex is never actually used,
update the split()-method to detect the read name format and use the
appropriate indexes.

An incorrect parse leads to an overwhelmingly large amount of reads
having the same apparent tile and X coordinate, with only the Y coordinate
varying.  This, in turn, can cause massive slowdowns when identifying
optical duplicates when there are lots of duplicates in the file.

See <http://en.wikipedia.org/wiki/Fastq#Illumina_sequence_identifiers>.
Add an option to skip optical duplicate detection

It may be desirable (or necessary, time-wise) to skip this step when
there are a *lot* of duplicates.  The duplicate detection loop slows
down quick when the groups under consideration get too large.

Note that this will affect the accuracy of the library size estimate.
Short-circuit on already-marked duplicates in findOpticalDuplicates()

If an index is already marked as an optical duplicate, don't bother
checking if we should mark it as such again.  This only skips through
the inner loop, not the outer loop, so it's not a huge win.
Minor polishing of external pull request regarding optical dupe detection.
Eliminate separate option for suppressing optical dupe detection -- just set READ_NAME_REGEX to null to suppress.
Fix usage for READ_NAME_REGEX -- change field numbers to 1-based.
Add package-visible method to get number of optical dupes from MarkDuplicates object for testability.
Add unit test to confirm that null READ_NAME_REGEX works.
Add unit tests for both regular and casava 1.8 style read names.
Merge pull request #42 from broadinstitute/kt_fix_quality_score_encoding

Add harmonization of differing Quality Score Encoding schemes in the SAN...
Merge pull request #47 from broadinstitute/ts_optical-duplicate-detection

Optical duplicate detection optimizations
Merge pull request #46 from broadinstitute/tf_fifobuffer

First version of a large-memory fifo buffer class.
Fix oversight in SANITIZE block resulting in NPE if there's only one read group.
Merge pull request #48 from broadinstitute/kt_fix_quality_score_detection_npe

SANITIZE method did not properly handle the case when there was only one...
This makes a fundamental change to how we run Picard.  We now have a
single JAR (command line program), rather than multiple JAR (one per
tool). In this brave new world, the single command line program is given
the the command line program name (ex. SamView) to specify which tool to
run.  We also provide a convenient summary of all of the tools
available.

For the developers, we add a facility to add new command line programs
to the single JAR, by extending the PicardCommandLine and adding the
package name(s) for us to search for classes that extend
CommandLineProgram.  The usage is now put in
CommandLineProgramProperties, where we can also specify short usages
(for the summary help message), program versions, and program groups.
The latter is useful for grouping tools that operate on common filetypes
or have similar function (ex. SAM/BAM).

We made a number of new tools public, coming from our internal toolset.
These include: BaitDesigner, CalculateReadGroupChecksum, CheckTerminatorBlock,
CollectIlluminaBasecallingMetrics, CollectIlluminaLaneMetrics,
CollectJumpingLibraryMetrics, CollectOxoGMetrics,
CollectQualityYieldMetrics, CollectRrbsMetrics, GatherVcfs,
LiftOverIntervalList, ScatterIntervalsByNs, and SplitSamByLibrary.
These may prove useful, or not.

Enjoy!