Twiddle whitespace, drop unused import
Fix copy-pasted exception message
Update provided Picard to 1.93 and do needed fixes

This makes us incompatible with Picard < 1.84, unfortunately.
Add Picard .jars: tribble, variant, commons-jexl

They will be needed for VCF support. commons-jexl is needed for running
programs that use variant, but it's not needed for compilation.
Add VCF input support
Add VCF output support
build.xml: silence annotation methods warning

The tribble/variant code causes a lot of these unless Cofoja (Contracts
for Java) is installed. We don't care about them, so just silence them.
Add BCF output support, with AnySAM-like selection

That is, there is only one VCFOutputFormat (and the KeyIgnoring one),
but it behaves for VCF/BCF like (KeyIgnoring)AnySAMOutputFormat does for
SAM/BAM: you can select the format you want and it'll create a
RecordWriter of the appropriate type.

We only output BGZF-compressed BCF, because the spec describes it as the
canonical format: "it's acceptable to not BGZF compress a BCF2 file, but
not all readers may handle this uncompressed encoding".
Enable reading VCF headers from both VCF and BCF
BAMSplitGuesser: don't skip on late verify error

I.e. don't skip ahead when we've verified at least one BGZF block and
then verification fails. As far as I know such a situation has never
occurred as it's ridiculously unlikely, but it's good to be safe.
BAMSplitGuesser: accept mid-record EOF at end
SeekableArrayStream: report EOF correctly
Add BCF (BGZF or not) input, with heuristic splits

And with AnySAM-like selection and autodetection in VCFInputFormat.

Indeed, input of both compressed and uncompressed BCF is supported.
CLI: implement 'vcf-sort', sorts one VCF/BCF file
VCFRecordReader: end later splits correctly
CLIMRPlugin: set non-deprecated reduce tasks # too
[BV]CFRecordWriter: allow setting input header

The header of the input records is not necessarily the same as the one
used for output, and the lazy decoding relies specifically on the input
header.

Of course each input record could have a different header, but we only
allow setting one. What should be done for the general case isn't very
obvious...
[BV]CFRecordWriter: cache header data

Better than having to recompute what the parser needs for every record
while the header stays constant.
SAMRecordWritable: cache lazy (input) codec
build.xml: clean up somebody's leftovers