Added new pixel-based camera ray-cast implementation. The view plane of the camera is now separated into a grid of "virtual" pixels, and rays are cast through the center of each pixel "box".

This means the translation of pixel to scene coordinates is now more explicitly a responsibility of the camera object.

In the future, this will be very useful for:
- reverse projecting scene object wireframes on the screen (because it allows us to "know" precisely what _pixel_ is being hit)
- for voxels it becomes easy to predict if a voxel is smaller then one pixel (so they can be seamlessly pruned from the scene).