Fixed problem where `1.day.eql?(1.day)` is false

This fixes:
    1.second.eql?(1.second) #=> false

The new `eql?` requires that `other` is an `ActiveSupport::Duration`.
This requirement fixes a few existing inconsistencies:

    1.second.eql?(1) #=> true
    1.eql?(1.second) #=> false

It also brings ActiveSupport::Durations inline with other numeric types
in Ruby. For instance:

    { 1 => "foo", 1.second => "bar" }
    # Was => { 1 => "bar" }
    # Now => { 1 => "foo", 1.second => "bar" }

    { 1 => "foo", 1.0 => "bar" }
    #=> { 1 => "foo", 1.0 => "bar" }