[Truffle] Change min, max, isSplatted to required, optional, argumentsAsArray in the CoreMethod annotation.
[Truffle] Finish factoring Arity into just required, optional, allowsMore.
[Truffle] Get rid of the copy of options stored in RubyContext.

We used to copy some of the options into RubyContext where they can be
final for the benefit of the PE, as using Option.load() requires a
volatile read.
[Truffle] Remove visibility asserts - a mess, and don't always make sense in multi-language environment.
[Truffle] Change the generic dispatch node from caching to looking up every time.

This node had lots of potential problems - invalidation wasn't checked,
dead entries weren't removed, and the hash tables weren't synchronised.
For now we'll just remove the caching, call it UncachedDispatchNode,
and make it neverPartOfCompilation.
[Truffle] Remove accurate source positions for now.
Remove some lexer and parser functionality that has been long deprecated.
Remove thread-poll from caching call sites

* The IR builder adds thread polls at all required places.
Fix incomplete source section work.
Fix another source refactoring bug.
Tests for new detailed source positions.
Implement the offset part of detailed source sections.

It's not always correct, but it only leads to four failing Truffle specs
for keywords that the parser then asks the lexer again for a position,
such as __FILE__.
[Truffle] Reorder logically CoreMethod fields order and document argsAsArray.
[Truffle] Finish cleanup: optional = 0 is redundant.
[Truffle] Reorder ProcNodes: constructor first.
[Truffle] Have a try at implementing Proc#binding.

* We therefore need a declaration frame for every block
  as it is needed retrospectively when calling Proc#binding.
[Truffle] During warmup some benchmarks become metamorphic until splitting, so need to explicitly transfer.
Make frame requirement calculation a small method in ACP
Register end block to toplevel scope so JIT can know it exists
For methods and other scopes do not mandatorily not allow ACP to run on them
in case they happen to have an END block in them.

I opened up issue #2073: END blocks in exotic scopes do not capture outer variables