Ruby 1.9 always supports Rational(Rational(...), ...)
remove unused constants (no more present in MRI)
use @dt and @sub_millis instead of @ajd for creating new Dates
toJulianDayNumber already returns jd in Date#start
constant access style
add getters for @dt and @sub_millis in Date
use DateTime#compareTo instead of computing two #ajd

now
Date#== 586.2 ns/i ± 5.836 ( 1.0%) <=>   1705839 ips

with cached #ajd
Date#== 752.8 ns/i ± 21.67 ( 2.9%) <=>   1328355 ips

uncached #ajd
Date#== 2.931 µs/i ± 0.028 ( 1.0%) <=>    341210 ips
save ajd in cache if given in Date#initialize
use joda DateTime millis for Date#hash

* Joda-Time says one should use
  ((int) (getMillis() ^ (getMillis() >>> 32))) + (getChronology().hashCode())
  which can be (as Fixnum is a long)
  (getMillis() ^ getChronology().hashCode())
  but Date used simply the ajd so we do the most similar option