Support handling 64 bit timestamps on 32 bit machines

This basically reimplements the logic in a way that I find much more
understandable than the old code ported from MRI. This code is based on
a combination of https://github.com/schwern/y2038 and the MRI source
code, taking the most useful parts from both.

Fixes #1842
On Rubinius, we support large Time ranges even in 1.8 mode on 32 bit
Remove tags for passing specs on 32 bit for Time
Update licensing information for original sources
Fix File.read benchmark
Explicitly cast 64 bit values to long long
Filter out over-strict llvm-config --cxxflags flags encountered on OpenBSD
Cast string constant to char * before assigning to tm_64->tm_zone
Accommodate iconv library versions that have function names of the form libiconv_open, etc (OpenBSD)
Use configured path for header installation (#1757).
Use stagingdir local variable for better readibility.
Merge pull request #1891 from voxik/fix-rake-install

Fix rake install
Merge pull request #1890 from tonysidaway/openbsd-build

Openbsd build
Correct spelling mistake.
Make sure to reset root to NULL
Use DESTDIR environment variable to allow to specify custom installation directory.
Use Rubinius.lock instead of Channel
Fix description to make a sense.
Check DESTDIR for permissions as well.
Merge pull request #1887 from ryoqun/thread-rubinius-lock

Use Rubinius.lock instead of Channel