C++ demos: prepare infrastructure, add spheres_shadow.cc
rename Ray::a to Ray::o
KdNode::shapes changed to pointer and added to union together with *children (to save memory)
replace Plane with axis-aligned Box (because infinite Plane is not usable with kd-tree)
fix memory leak in KdTree::nearest_intersection
rename BBox::R to BBox::H
new file: common.h (Eps and Inf constants)