fix huge-mega-voxels and voxel file corruption

This fixes some error cases in parsing of corrupt or dubious voxel files. In some cases this will fix the random "large voxels in space" problem that has been plaguing us for a while.

One problem I discovered is that the original (like Jan 2013) voxel parsing code would read from a buffer but didn't check to see if the buffer contained enough bytes to keep reading. This would cause the parsing code to run off into memory and read in garbage. After much debugging, I determined that some of these corruptions were not happening on edits or on file saving (see note below) -- but instead on reading in the files. Sometimes reading the exact same file would produce different results (depending on the state of memory we overflowed into).

Note: there appears to still be a case that causes us to write these corrupt files. I am still tracking that down. But this code will at least handle the corrupt stream case better.
numberOfThreeBitSectionsInCode() will also return a proper error if it reads past the end of the expected size of the buffer. Check for that case here and assume the stream is corrupt in this case.