Refactored the marching cube procedure

The normals retreived with the older procedure were erroneous for thin objects (1 occupied voxel thick). The procedure was taking the voxels with corners on the 8 vertices, aligned on the 4 diagonals, of the current cube making the search region 3 voxels thick. For thin objects this was returning no surfaces at all.

The new procedure does 8 iterations of the marching cube algorithm, one centered on each vertex of the current cube. In consequence, this takes into account the occupancy of all the 26 immediate neighbours of the current voxel (plus its own) and it returns a much larger set of normals (a maximum of 40 instead of 5).