Adds tests for 'samtools cat'

Function cat_sams simulates the action of 'samtools cat', and test_cat tests
it by comparing the output to that of cat_sams.  bgzip is used to decompress
and recompress the bam files to break the relationship between read and bgzf
block boundaries.  This is used to check that samtools cat can properly
handle the case where the header and some alignments share the same bgzf
block.

run_view_test gets a 'cmd' argument that allows it to run subcommands other
than 'view'.  This unfortunately means it is now not very well named.
Adds more optional tags to alignment lines.

Adds various integer tags to the ends of some alignment lines in the test
sam file to check that they get written out correctly.
Add tests for bam2fq.

Test bam2fq by converting SAM/BAM/CRAM to fastq and comparing it to a file
made by the test script.  Adds a compare_text option to run_view_test to
do an exact line-by-line comparison of two text files.
Adds tests for samtools depad.

Depads a test SAM file, and compares the output with a version that has
been depadded by hand.  The files include comments describing the
padded and depadded CIGAR strings for each test read.

The test is currently a bit restricted.  It can only test the case where
the -T option is used due to some fundamental problems with updating header
lines when embedded references are used.  CRAM is not tested either as
the way embedded references are stored in SAM/BAM does not seem to fit well
with the CRAM specification.  Currently trying to convert to CRAM strips out
the CIGAR string of the reference, which removes the information about where
the pads are positioned in the reference.
Adds expected fail and unexpected pass.

Add code for handling expected failure and unexpected passes.  Change the
exit code to be non-zero if there are any unexpected failures or
unexpected passes.  If there are only expected passes and expected failures
then the exit code will be zero.  The rationale for failing on an
unexpected pass is that the test script needs to be updated to expect a
pass in that case.

Updates the samtools view -l and samtools depad tests to be expected failures.