rewrite in c++
readability fixes
add -c option (chromosome) for parallel processing
better error checking for bam io
inline a few of the trivial BamEntry functions
refactor BamReader exception handling

readable
defer to RowAssigner for entry stop position

RowAssigner knows if it is needed or not, and it's kind of expensive to
calculate.
treat 0 returned from bam_iter_read as success
hash char* directly instead of creating std::string for RGs
save warnings and summarize them at the end.
calculate read length columns on a per lib basis

when passing -r -l, we used to make a column for all_libs x all_lens.
now we figure out what reads lengths are in each lib and make fewer
columns.
fixes for old gcc versions (4.4)

it was having trouble with brace initialied maps of sets
only give -fno-deduce-init-list to gcc

clang doesn't want it
Squashed 'vendor/samtools/' content from commit 5f2c744

git-subtree-dir: vendor/samtools
git-subtree-split: 5f2c744c22c5c2d313ad73c594bdca244aa2dfa9
Merge commit '71efc3091b4c80f54a8ae06d4bb80510ab451c7b' as 'vendor/samtools'
add samtools as a subtree, build it and gtest directly

instead of using externalproject_add
bundle the required bits of boost
remove some binary stuff that snuck in
remove old build system patches
allow setting suffix on exe