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.
If the file is corrupted in such a manner that we think the bitstream is legitimate, but it causes us to recurse so deeply that we get into a tree depth inconsistent with our standard (namely we prevent trees with cells this small in other parts of the code) then we must have a corrupted stream and we will exit immediately.