Add LEN parameter to Camera::eye_ray method
Use length of the ray passed to SurfaceInteg::Li

Previously the length of the ray was ignored and initialized in the
method itself.  Now all callers of SurfaceInteg::Li should set the
ray's length properly, so it can just use what it is passed.

This is generally a bit cleaner (and closer to how VolumeInteg::Li
treats its ray argument), and also makes it possible to correctly set
the length of camera-rays even when the camera is outside the scene.
Set scene.horizon based on the actual scene

... instead of just setting it to a constant value.