Fixed signed area and now rendering is actually working!

Magnitude of the sross product of U and V is |U||V|sin(theta).
If U and V are adjacent vectors on a parallelogam, then the height
of the parallelogram is |V|sin(theta). If you cut off one of the
triangles and slide it down to the other side, you make a rectangle with
height |V|sin(theta) and width |U|, so the area of the parallelogram is
|U||V|sin(theta), which is |UxV|. A triangle is half a parallelogram so
the are of a triangle is |UxV|/2.

To get signed area, we want to see if the vertices of the triangle go
clockwise or counterclockwise. Cross product of one leg's vector by the
adjacent leg's vector (call them U and V again, so UxV) points in one
direction for clockwise, and the other direction for CCW. So if we dot
this vector with a reference vector, it will be positive if they are
pointed in (roughly) the same direction, and negative if they are
pointed in (roughly) opposite directions (|U||V|cos(alpha), so alpha is
either 0 or 180 degrees).

So our reference vector will be the normal of the parent triangle.
Made the triangle's normal vector a unit vector.
Fixed the up vector for rendering, to ensure it's really perpendicular.
Removed some debug printfs.
Inverted the Y-dimension to match computer graphics, but somehow I have X and Y swapped.
Revert "Inverted the Y-dimension to match computer graphics, but somehow I have X and Y swapped."

This reverts commit 56ffcfaefe13775d2ce2fd05efd483f8b663dd94.
Got X and Y dimensions correctly swapped now.
Added comment about coordinate system.
Merge branch 'master' of github.com:mearns/raytrace