#hash and Opal fixes

The question in this case is, is `Fixnum` being returned considered integral part of Ruby? The docs on `Object#hash` state the following:

> Generates a Fixnum hash value for this object.  This function must have the
> property that a.eql?(b) implies a.hash == b.hash.
> 
> The hash value is used along with #eql? by the Hash class to determine if
> two objects reference the same hash key.  Any hash value that exceeds the
> capacity of a Fixnum will be truncated before being used.
> 
> The hash value for an object may not be identical across invocations or
> implementations of ruby.  If you need a stable identifier across ruby
> invocations and implementations you will need to generate one with a custom
> method.

This would lead me to believe it indeed _should_ return a Fixnum, although MRI docs have lied in the past on several occasions.

If Opal can't support this then I'd say the best way would be to:

1. Test for the return type being a Fixnum
2. Wrapping the spec in a non-compliance guard