Add spec on Hash[] with default_proc.
Fixed Hash[] with default_proc.
Retry on sysread since it should behave in a blocking fashion
Fixed broken Hash#to_h after 0c40da7.
Fix RUBY_PLATFORM constant to return same value as on MRI

Fixes #2588
Merge pull request #2589 from razielgn/hash-constructor-default_proc

Hash[] strips default_proc.
Fix specs for non shared behavior

These specs should not be shared, since they don't apply for example to
IO#syswrite.

Also adds a case for binary writing for IO.write.
Don't try to transcode if external encoding is binary encoding
Free data in C-API specs for Data_Wrap_Struct and friends
Add specs for TypedData_Wrap_Struct and friends

This is a way to use more type safe wrapping of structs in the C-API.
Add spec for RData and DATA_PTR

Also cleans up a bunch of the spec descriptions.
Fix memory leak in RData / RTypedData specs
Implement typed Data functionality for C-API

This adds the TypedData_* macro and supporting methods. Newer C
extensions that don't need 1.8 compatibility are using this more and
more so we should have it as well.
Add specs for rb_num2(u)int
Add rb_num2(u)int to C-API
MRI doesn't include unistd.h in any of the ruby.h headers