Plane3D math fixes

Fixed some of the math of Plane3D -- mainly problems related to a false assumption that the normal vector, (a,b,c), would be unit length. Also improved performance by memoizing the inverse of the magnitude of the normal vector.