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.
Why are we throwing a NPE?  How about an IllegalArgumentException or something more informative?