Fixed a syntax mistake regarding blocks in specs.

The block wasn't passed to `raise_error`, due to missing parenthesis
around it and the block.
Adding them would've looked a bit awkward, so I put the second
expectation in a lambda and passed it as a block to `raise_error`.
Add specs on Module#const_get raising a NameError with missing constant.

NameError should be raised with the missing constant as the second
argument, so it would show up when calling `#name` on the error.
Module#const_get: raise NameError with missing constant name.
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}
Don't check for zlib.h header when using vendored version

Before this header works, zlib needs to be configured. But this step
prevents zlib being built in the first place. Therefore we only
conditionally check this if vendored zlib is not enabled.
Fix NameError in configure script
Merge pull request #2452 from cypher/fix-name-error-in-configure-script

Fix NameError in configure script
Allow for toplevel llvm-config in specified LLVM path

Fixes #2382
Fix IRB running from the command line

Since we now set $0 in the preamble, we should improve the check whether
to start IRB or not based on whether we run some other stuff.