Ruby 1.8 Support

LOTS of changes here. All tests are passing, though. Haven't tested this in the wild yet...