Make S_FLOAT_EPSILON a global variable rather than a constant.

This allows it to be more easily changed from within Ruby code, though
that's not done yet.

Also, for floats, use an epsilon of 1e-6, and for doubles, use 1e-9.
This fixes a check for whether a matrix is orthogonal, as 32-bit floats
would cause comparison of (m*m.tranpose == IDENTITY) to return false,
which is true if you're highly exact about it, but otherwise false if
if you're only concerned about so much precision (which is the case if
you're using floats in the first place).
Add methods to adjust the float epsilon of snow-math.
Replace use of rb_float_new/rb_num2dbl with DBL2NUM and NUM2DBL.

This is mostly to aid in porting back to earlier versions of Ruby or
other implementations, if I ever get around to doing that, since I'm not
sure I can guarantee rb_float_new or rb_num2dbl will exist, whereas it
seems like the TYP2TYP macros are like band-aids over possibly-changing
APIs.
Add default epsilon, DEGREES_TO_RADIANS, and RADIANS_TO_DEGREES constants.

Also use rb_define_const in place of rb_const_set so rdoc will pick up
the constants.
Add orthogonal? for both Mat3 and Mat4.

Simply tests for whether a matrix is orthogonal. This depends on the
Snow::float_epsilon being reasonable enough to allow for lack of
precision, so for floats, you generally want 1e-6, and for doubles 1e-9
is probably a good number (otherwise you drift into well-maybe-it-could-
-be-more-accurate territory, which you don't want to do).
Add pitch/yaw/roll methods to matrices.

This just returns the pitch, yaw, and roll of a matrix (in Mat4's case,
it only considers the inner 3x3 matrix), or at least what it might
describe if the rotations were reduced to Euler angles. This is
imprecise and I would generally caution anyone against using Euler
rotations when you've got tools like quaternions, but it's fairly
useful in some games.
Version 1.7.0

- Add #orthogonal? to Mat3 and Mat4 to determine if a matrix is
  orthogonal.

- Add #pitch, #yaw, and #roll to try to get those rotations from a Mat3
  or Mat4.

- Remove duplicated code for array freezing.

- Add Snow::float_epsilon and Snow::float_epsilon=. These allow you to
  adjust the epsilon used for floating point comparisons in snow-math.
  This directly affects things like ==, orthogonal?, and so on, as the
  gem compares floats by testing if the difference of two floats is less
  than the epsilon. As of 1.7.0, the default epsilons are:

    * Approximately 1e-6 for 32-bit floats (single)
    * 1e-9 for 64-bit floats (double)

  In the past, the default precision was 1e-9 for both float and double,
  but this was a problem because it made testing for equality difficult
  due to small differences in 32-bit floats that were still greater
  than the epsilon, so they were considered not equivalent.

  The defaults should be sufficient for most purposes. If you want less
  precision, you can always do that as well, but the defaults should be
  in a spot where it's just large enough to ignore tiny differences you
  don't want to consider significant.