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.