Improve Rng::canonical a bit

I suspect there was some overflowing going on the previous version.
Ensure Rng::canonical never actually returns 1.0f
Remove (hacky) specular color support.
Properly kill rays using black.

Fixes misterious blue (sky colored) tint in shadows.
MIS and directly gather irradiance from lights.

Leads to much cleaner results in scenes with only one light.