Cleaned up main code a little.

Separated the code tat sets up the frame and actually does the
raycasting, from the code that builds the pixbuf and other GTK stuff.
Added function to set the magnitude of a vector directly.
Fixed a bug in the new vector code.
Working on encapsulating the code to setup the frame for rendering.
More clean up of main code, abstracting frame stuff.

Using the newly created function to setup the frame. Works fine.
Slight speed optimization for rendering.

Doing less math to get the location of the pixel in the pixbuf. Instead
of calculating the offset for every pixel, we just walk it through as we
go.
A little clean up of some local vars.
Testing to see if point is on wrong side of frame.
Trying a slightly optimized function for raycasting with triangles.
Merge branch 'main-refactor'
Using slightly faster triangle rayCast method.

Instead of using Triangle_intersect, we can roll the distance checking
directly into the Triangle_rayCast function, so it doesn't need to do
any of the barycentric or color calculations or even find the point of
intersection if the distance of intersection is greater than the current
closest.
Added doc comment for Triangle_rayCast.

Also removed now-unused Triangle_intersect function.
Added initial quat API
Added header comment to quat.h, explaining what Quaternions are.
Implemented some functions for quaternions, including getting the quat for a rotation.