Add transform.rb

This is a pretty small class that looks large because it tries to
simplify 3D transformations. It's like a convenient wrapper around a
Mat4.

Currently, the transform's Mat4 is only updated if it's invalidated by
any of Transform's methods -- so, for example, rotation, translation,
and so on.

An easy way to look at the Transform class is to view it as a series of
matrix transformations, always in the same order:
  - translation
  - scale
  - rotation

Translation represents the transform's location in space (whether it's
world space or local to something else is irrelevant to the class), the
scale is just what it says on the tin (it doesn't affect movement or
translations -- rotation only affects the #move method, which rotates
the translation vector before adding it), and rotation is obviously the
rotation.

Initially I thought about including parent/child hierarchical stuff in
the transform class, but that seemed beyond the scope of what it needed
to do. It would be much easier to subclass it or include it in something
that tracks relationships like that, and as a result you get the benefit
of not having to worry about storing more data than you need.

Also, in the future, I may replace the Mat3 rotation with a Quat. So,
just a heads up on that. This is all still early work and the interface
isn't stable.