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.
using numberOfThreeBitSectionsInCode() instead of just dereferencing the lead byte is the safer way of determining the octal code length.