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 makes `ActiveSupport::Duration`'s behavior consistent
with other numeric types in Ruby.

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

    1.eql?(1.0) #=> false
    1.0.eql?(1) #=> false

    { 1 => "foo", 1.second => "bar" }
    # was => { 1 => "foo", 1.second => "bar" }
    # now => { 1 => "bar" }

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