Move Light render interface into new Light::Sampler class

This basically splits the old Light class into two parts:  The Light
class continues to be used for scene-definition, and a new
Light::Sampler class is used for rendering.  Most of the complexity of
lights is actually in Light::Sampler.

Light::Sampler objects are created just before rendering, after
loading the entire scene, and so can naturally incorporate any extra
data needed for rendering that can't be calculated until the entire
scene is available (such as used by EnvmapLight and FarLight).
Previously we just delayed initializing that data, and called
Light::setup just before rendering to calculate it, but this forced us
to always keep lights mutable, which was kind of ugly (now we can make
Lights const in a bunch of places we couldn't before).

This will also make it a bit easier to add explicit lights to
Surfaces.  With the old scheme, surfaces just added lights directly to
a global list for rendering.  That was fine for area lights, which
don't exist until that point, but any explicit lights would have
ownership issues:  both the containing Surface and the global list
would think they had ownership.  Light::Sampler objects are always
created for rendering, and so have a clear owner.
Allow lights to be stored in SurfaceGroup
Remove Scene::lights field

Store lights in Scene::surfaces instead.
Add BBox::diameter method
Export new BBox methods to Lua
Add SpaceBuilderFactory::make_space method

This is always the end goal of SpaceBuilderFactory anyway, so we may
as well have a convenient method to do it.
Use SurfaceGroup instead of Scene in 3DS loader
Tweak variable names in load.lua

... to reflect the change to loading into surface-groups instead of
scene objects.
Remove container functionality of Scene

This makes Scene a purely render-time abstraction, which references
the scene contents indirectly.

As there is no split into "scene-setup" and "render" states, we can
get rid of the Scene::setup method, etc, and do everything in the
constructor.

For now, Scene::num_surfaces is disabled, as Scene now just contains a
simple Surface reference in Scene::root_surface, and there's no way to
count surfaces.
Include global-render-state.h where its used

We will remove the include in render-context.h in a future commit, so
this makes sure nothing breaks.
Don't include global-render-state.h in render-context.h

This will avoid circular include problems in a future commit.
Make Scene object a part of GlobalRenderState

Now that the Scene object is only used during rendering, there's no
reason for it to be created independently, so just embed it directly
in GlobalRenderState, which allows a somewhat more convenient
interface.

This also moves selection of the search accelerator into the
GlobalRenderState constructor, which is where many of the other
render-time configuration is done.

Printing of scene-statistics is currently disabled.