Line-based text sorter. Key is an int: 8th column.
Preliminary support for many sorts in one go.
Set the output filename according to the input.
Support doing many sorts in one go.
SortInputRecordReader: extend instead of contain.
Use Hadoop's FileSystem, not Java's (duh).
80-columnize.
Staticify SortInputRecordReader.getNthColumn.
Fix error message.
Summarizes linear data treated as groups of lines.

Currently, sums the 4th column of every 3-line block into the first line
of the block. (And prints out only that first line.)
Don't NPE if a line can't be parsed.
Actually sort, using a TotalOrderPartitioner.

Uses TotalOrderPartitioner and InputSampler from Hadoop trunk since the
0.20.2 versions use the old API, which would not only cause a bunch of
deprecation warnings but require an API-rewrite of everything.
build.sh: clean first.
Add a BGZF file indexer.

The index will be needed for splitting the file into MapReduce-palatable
chunks.
Add BGZFIndex, a class to access the BGZF indices.
We need a BAM alignment indexer, not BGZF: redo.
BAMIndex -> SplittingBAMIndex; it's not for *.bai.
Allow SplittingBAMIndex to take an InputStream.
Properly package stuff, add an ant build.xml.
Add SAMRecordWritable and its dependencies.

We need to duplicate much of Picard due to behaviour we need to change
(or its dependencies) being package-private or private and thus not
fixable by simply making a subclass.

The root cause is that the BAMRecord class, an instance of which is
returned by BAMRecordCodec.decode(), requires a valid SAMFileHeader to
be passed to it on creation. This should not actually be necessary, but
that's how it's written. Thus we need to make a custom BAMRecord—
LazyBAMRecord—that doesn't have this limitation.

Unfortunately, BAMRecord is package-private, so we need to copy that
here. And most unfortunately, it depends on some package-private methods
in SAMRecord which modify some private data in SAMRecord, so we need to
pull in SAMRecord as well. These two classes then force us to pull in
all the rest in a bit of a dependency cascade.

SAMRecordWritable notes that we may need to do something similar for
BAMRecordCodec.encode() in case its implementation ever changes to
require a nonnull header (which, again, it should not).