Finish converting GFX module to use TStack methods.

- Change GFX_set_perspective() to use TStack methods();
- Change GFX_look_at() to use TStack::lookAt();
- Clean up GFX_unproject().
  o Only update objx/objy/objz when GFX_unproject() is successful.
  o Compute vin in a way which makes the meaning of the computation
    more explicit.
  o Make clever use of comman operator to conditionally update vout.
- Fix bug in mat &mat::operator*=(const mat &) so that the multiplier
  can only be a square matrix.
  o Leverage vec &vec::operator*=(const mat &) to simplify code.
- Replace C headers with their C++ equivalents.
- Implement TStack::lookAt().
- Fix spelling in comment.
- Don't delete OBJMATERIAL::program in ~OBJMATERIAL().
  This "delete" was happening twice because both the OBJMATERIAL, and
  its OBJ parent point to the same program.
  o There's still a bug here which can be revisited when using
    C++ shared_ptr's.