vectors: Compensate for length = 0 when normalizing

The low-level SIMD4f type is happy with using NaN when normalizing a
vector with a length of 0, but we want to provide some safety net and
reliability across platforms, so we make the normalize() function
slightly slower by checking the vector length.
tests/triangle: Use a fuzzy check on the normal vector equality

The normal vectors for the triangle and plane are not going to be
exactly equal.