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.
The variables need to be named more clearly to help me understand what is going on here.