Cram code base

Just rebased the branch from master. Briefly:
- adds new htsjdk.samtools.cram package that contains CRAM backend like codecs, structures and thins
- adds CRAM type in SamReader
- CRAMFileReader and writer implementations
- changed visibility of TagValueAndUnsignedArrayFlag, used in the cram package
since nextContainer can set container to null but not clear the records we need to change this to 
				if (container == null || records.isEmpty())

or have nextContainer call records.clear() when an null container is returned.