Z-buffer support for software rasterizer

Added z-test to software rasterizer and demonstrated proper occlusion
among two primitives rendered front to back. However, detected strange
issues with util::Image class. Red and blue channels appear to be
swapped, and a simple test of drawing three colored stripes down the
image seems to fail. Going to have to debug that later. Need some unit
testing to reliably guarantee functioning of these critical
abstractions.