Refactor Date#<=>(Date): use the pattern described in [ruby-core:58498]

* http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/58498
* We still depend on compareTo() returning -1,0 or 1, maybe we should probably check if not lesser or higher