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 #47 from broadinstitute/ts_optical-duplicate-detection

Optical duplicate detection optimizations