Fix a divide by zero in Vector3.normalize()

Attempting to normalize a vector with length 0 results in a divide by
zero; instead of crashing, we detect this (plausible) condition and
return a saner result: Vec3{0,0,0}. (While mathematically incorrect,
this will prevent the engine crashing due to rounding errors and such.)