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.
Adjust and add Array#sample specs for MRI failure(ex. 2.0.0-p247)

related ruby/ruby#379
Add a Time#- spec for String arguments
Add a Time#+ spec for String arguments
Add Numeric#step specs for String arguments
Fix Time#{+,-} and Numeric#step with float-coercible String