Misc cleanup + prep for MIS.

A lot of this is just adding "final" and "override" key words to things.
Other than that:
- Moved total_emitted_color() to be an Object method, so all Objects
  implement it, not just Lights.
- Changed BVH and LightTree to accept all Objects, not just Surfaces
  or Lights, respectively.
- Made more methods const, including bounds().