Add specs for visibility of top level methods and script binding
Setup top level visibility and script attributes

This creates a tag for a call frame indicating it's a top level script
or the top level for visibility checks. For this we also support a
boolean value on call_under definining whether to open a new visibility
top level or not.

This can be used to fix visibility checks and have methods defined
inside blocks have the proper visibility in Rubinius.

Fixes #2316 and #2089
Remove tags for passing specs

These tags were for specs for methods defined in blocks and using the
proper visibility. These were the underlying specs for the fixed bugs.
Cleanup unneccessary code with new visibility setup

Remove other code that was put in place to support only certain
visibility cases, because the new setup handles them already.
Audit LLVM object layouts and improve style

Don't use numeric dummy output functions, but base them on the type
name. Also audits all LLVM object layouts we define, for example
VariableScope was not correct.