add more ranges to monte_carlo
add get_hemisphere_vector to monte_carlo

I renamed `GetCosineDistributedHemisphereVector` to `get_hemisphere_vector`,
and I did not port `GetHemisphereVector`, because the latter is not used in
Luculentus.