Write specs for Module#public_instance_method
Implement Module#public_instance_method
Add specs for Module#instance_method
Fix Module#instance_method for setting NameError#name
Add a spec for Module#public when given an undefined name

`raise_error(NameError)` matches NoMethodError too.
Add a spec for Module#protected when given an undefined name
Add a spec for Module#private when given an undefined name
Add a spec for main.public when given an undefined name
Add a spec for main.private when given an undefined name
Fix specs for Module#public_class_method when given an undefined name
Fix specs for Module#private_class_method when given an undefined name
Fix exceptions when visibility setters given an undefined name

* Module#{public,protected,private}
* Module#{public,private}_class_method
* main.{public,private}
Add specs for Proc#{eql?,==} to clalify 2.0 behavior
Remove Proc#{eql?,==} from 2.0
Slightly reformatted the style of backtraces.

This commit introduces two extra newlines in the format, one before the message
and one after each "Backtrace:" header (including the ones used for custom
backtraces).

This means that instead of this (where "..." would be the message):

    An exception occurred running /tmp/test.rb
        ... (NameError)

    Backtrace:
      Kernel(Module)#number (method_missing) at kernel/delta/kernel.rb:81

You get this instead:

    An exception occurred running /tmp/test.rb:

        ... (NameError)

    Backtrace:

      Kernel(Module)#number (method_missing) at kernel/delta/kernel.rb:81

It's an extremely pedantic change, partially driven by a bad case of OCD, but
it does make the error message stand out more (at least in my opinion).

Related issue: #2496.
Rubinius supports 1.8 and 2.1 language modes.
A giant axe takes a swipe through the thicket of code...
Removed building nonexistent C-exts.
Migrate kernel to 2.1.
Moved C-API headers to 2.1 directories.