Add String#to_f test for strings represented as hex
Add more Kernel#Float tests that fail in strict mode
Add strict mode for String#to_f and Kernel#Float

* created String#to_dbl, which is modeled from String#to_inum
* moved primitive parsing from String::to_double to Float::from_cstr
* fixed "fails:String#to_f returns 0 for strings with leading underscores" in 1.9 mode
Use stricter equality comparision when expecting whole numbers
Fix Kernel#Float examples to test both x and X for hex
Move String#to_dbl to Rubinius::Type::coerce_to_float

This change broke the behavior of many Math methods that do not accept
string arguments. To fix this, Rubinius::Type::coerce_to_float_for_numeric
was added and is analogous to MRI's rb_to_float.
Add expectations for -Inf and Inf to return 0.0
Return 0.0 for the abbreviation of Infinity
Account for null byte when allocating a new buffer
Add LocalBuffer struct to handle buffer deallocation

This follows the Resource Acquisition Is Initialization (RAII) idiom,
which frees the buffer upon destruction of the object.

Thanks to @evanphx for the idea.
Use LocalBuffer to free the buffer at any exit point of Float::from_cstr
teach builtin proc how to handle nativefunction as bound_method
NativeFunction: handle FFI callback as return type
Fixed String#match to support 1.9 position parameter.
Merge pull request #1666 from anthto/master

Fix String#match in 1.9 mode
Don't fixate backtrace receiver column width to 36

Rather, make the column width proportional to the terminal width.

The column width is calculated as 45% of the termianal width. The percentage is
chosen not to change the default behavior (45% of 80 is 36).
Correctly initialize TERMINAL_WIDTH

Currently, Rubinius::TERMINAL_WIDTH is always set to 80, not to the actual
number of columns for the current terminal.

This commit fixes this bug, which is introduced by this commit:
  87c1849 Guard querying tput more closely

Rubinius::TERMINAL_WIDTH is set by reading the output of the "tput" command.
However, tput always prints "80", because it can't access to the current
terminal by any means. It's because tput's stdout nor stderr is connected to
the current terminal's file descriptor. Both are redirected by rubinius.

This commit allows tput to access to the current terminal again via stderr and
can be confirmed by the following strace invocations:

$ strace -f -e trace=ioctl ./bin/rbx -e ''

Before this commit:
[pid 11709] ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff39d857c8) = -1 EINVAL (Invalid argument)
[pid 11709] ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff39d857c8) = -1 EINVAL (Invalid argument)
[pid 11709] ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff39d85778) = -1 EINVAL (Invalid argument)

After this commit:
[pid 11293] ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7ffff444c138) = -1 EINVAL (Invalid argument)
[pid 11293] ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid 11293] ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid 11293] ioctl(2, TIOCGWINSZ, {ws_row=43, ws_col=227, ws_xpixel=0, ws_ypixel=0}) = 0
Factor out the command-generation part of ruby_exe
Process.spawn specs
Fix Process.spawn spec failures