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.
can ```e`` be final?