Fix #40; support ActiveSupport::TimeWithZone

This one was a doozy. Time.zone returns an ActiveSupport::TimeZone,
which returns an ActiveSupport::TimeWithZone when calling at, parse,
strptime, et al. So values would be coerced into the correct type, but
then validation would fail because they were being compared to the wrong
class.