Split shadow and transparency ray types.

This is required to be able to have opaque objects cast transparent shadows for example.
Previously it was not possible as both transparency and shadows used the shadow ray type.

What about passing the ray type instead of a boolean? It would remove a test and more importantly, it would be clearer at the call sites.