Improve Matrix3H<T>::toLookAt

Change toLookAt so it's no longer undefined when the view vector is
parallel to the up vector.
Add struct LookAtSetup to pass rarely changing parameters to toLookAt