Split Epsilon from ApproxEq

Separated epsilon into its own trait.
Add Rand support for Vectors

Generates random vectors component-wise.
Fix is_perpendicular and is_parallel

Fixed is_perpendicular to account for large vector magnitude
Added is_perpendicular_eps to allow custom epsilon
Added is_parallel and is_parallel_eps
Moved length2 from EuclideanVector into Vector
Changed approx_eq to be <= epsilon
Fixed whitespace
Added Rand support for Points
Moved Intersect impls, Added IntersectPoint

Moved Intersect impls to a single file.
Added IntersectPoint to allow a choice between getting the intersection
point and the t value.
Changed plane normal to be non-normalized by default.
Added some helpers to normalize plane normal.
Changed Plane approx_eq to return true for equivalent planes with
differently scaled normals.
Vector fixes

Fixed vector ApproxEq to use relative scale
Added specialized versions of is_parallel_eps for various vector sizes
(needs benchmarking to see if this is useful).
Fixed normalize and acos functions to use rsqrt.
Added more comments and renamed some parameters for consistency
Improved test_is_parallel_perpendicular
Added Parallel and Perpendicular traits

Added Parallel and Perpendicular traits