Clear exception when using throw

Fixes #2001
Merge pull request #2005 from kachick/fix/kernel-public_methods_including_protected_methods

Kernel#public_methods contains protected methods
Add specs for initialize_clone and initialize_dup
Implement initialize_clone / initialize_dup behavior

Fixes #1889, #1910
More reasonable specs for marshaling an encoded String.
Wait up to a second for a process to daemonize.
Specs for Marshal.load with encoded Strings.
Fix marshaling string encoding. Fixes #1971.
Spec for sprintf result.
Spec for String#downcase encoding.
Encode result of #sprintf and String transforms. Fixes #1977.
Fixed String#<<

Ensure that new string size and is less than INT32_MAX
Before this commit code below fails with '[BUG: Invalid byte array size]'

string = ""
book = "So Long, and Thanks for All the Fish"
30000000.times {|i| string << book }
Add specs for Range#first on X19
Fix Range#first on X19

Range#first has different behavior with Range#begin from Ruby 1.9.
It should return the first element, or the first n elements.

    range = 0..2

    range.begin    #=> 0
    range.begin(2) #=> ArgumentError

    range.first    #=> 0
    range.first(2) #=> [0, 1]
Merge pull request #2010 from kachick/fix/Range-first_accept_argument_on_X19

Range#first has different behavior with Range#begin from Ruby 1.9
raise an error, when curses was not found
use rb-readline when curses was not found
raise rb-readline version to 0.4.2
Fake out SIZEOF_BDIGITS properly like in 1.8 mode

SIZEOF_BDIGITS and RBIGNUM_LEN need to match up. Fixes a test failure in
sqlite3-ruby.
Add additional defines needed for 1.9 mode