Renamed Object to Surface, changed rendering order (shading and reflections).
Before big changes.
Passing pointer to ray, instead of value.
Big refactoring and cleanup, finally correct sphere intersection detection.

But there are problems with -O0 optimization :(
Fixed bug, added openmp support, refactoring.