Jc cram changes

This pull request includes a rebase of Vadim's cram code base as well as all of the necessary changes for the htsjdk to support CRAM input and output.
perhaps some explanation for what ```i, x, y, u`` are used for?