this is correct - the SGP guys a long time ago decided that when converting a CR2 file to fits, they would call DCRAW with the option that rescales the data from the 14-bit native space of the camera to the full width of a 16-bit integer. at some point i asked them not to do this, and they said they'd think about it and then nothing happened. i think for their userbase, if they just changed this midstream, there would be a lot of confusion. the net result is that if you save a CR2 with SGP, then it's still in the native 14-bit format, and if you save a fits, the data has been rescaled. if you open that CR2 in pixinsight, PI calls DCRAW in such a way that the file is 1) composed of 16-bit integers and 2) the 14 bit data occupies the lower 14-bits of these 16 bit integers with the top two bits set to 0. this creates an incompatibility with, say, calibration frames captured as CR2 and lights captured as FITS coming from SGP.
FITS itself can handle all kinds of data types - 8 bit integer, 16 bit integer, 32b floating point, 64b floating point, etc.
as for unity gain, that's a term that means 1 photoelectron = 1 ADU. generally speaking the ADU values that the camera stores follow the formula ADU = gain * electron count. in a DSLR, the ISO is essentially an amplifier gain, and in every DSLR there's going to be an ISO for which the gain is near 1.0. probably never exactly 1 because of how the ISOs are quantized... on most canon cameras this is somewhere between ISO 800 and ISO 1600.
rob