Merging with jruby-1_7
use snapshot version [skip ci]
Some more kwargs error work++
post_reqd_arg already knows about kwargs
Refactor optarg logic (no fixes)
Another round of kwargs refactoring
Receive arguments know enough to extra proper kwargs value itself (fixes issue that interpreter did not know 100% if last hash args was a kwarg or not
Remove dead method after last round of refactoring
fix tyop
remove dead code
[Truffle] - Using putIfAbsent to add a new RubySymbol in the SymbolsTable.

Thanks @thedarkone to help us with that. Without putIfAbsent multiple
threads might concurrently call createSymbol with the same String name,
create a bunch of RubySymbols, store them in symbolsTable (overwriting
each other) and then return them to rubyland. But using putIfAbsent we
avoid this behaviour.
[Truffle] - OpenModuleNode should handle only with Truffle Nodes.

We should not mix AST nodes with Truffle Nodes in the same class (Except
the Translator class).
Translator.java is the class responsible to convert AST Nodes into
Truffle Nodes. All the rest of the code related to Truffle should only
deal with Truffle Nodes.
[IR] Removed redundant checks from df analyses.

* If a call target traps the caller's binding, the caller scope
  would have had 'bindingHasEscaped' flag set.

* Also, DRYed out some code in LVA which improves code readability
  at the cost of a bit of extra work.
[IR] Minor tweak + comment clarification.
[IR] Cleaned up Operation flags.

* Moved around operations among classes, and fixed some incorrect
  operation flags.
[IR] Minor: Documented OpFlag use + added FIXME for later cleanup.
[IR] Minor: Comment cleanup.
Use an actual Ruby instance variable in Pathname

* Fixes #1460
* So we are sure to be fully compatible with MRI
* #instance_variable_set must be reflected and redefining it on Pathname seems
  a very bad idea (even though Pathname is immutable without #instance_variable_set)
* We need anyway to add the instance variable for subclasses which access @path
  directly
* An alternative would be to define a YAML deserialization hook
  but we may face other compatibility issues
Use an actual Ruby instance variable in Pathname

* Fixes #1460
* So we are sure to be fully compatible with MRI
* #instance_variable_set must be reflected and redefining it on Pathname seems
  a very bad idea (even though Pathname is immutable without #instance_variable_set)
* We need anyway to add the instance variable for subclasses which access @path
  directly
* An alternative would be to define a YAML deserialization hook
  but we may face other compatibility issues
`CompatVersion.getVersionFromString` does not cover RUBY2_1

... it's deprecated but still should work as intended/expected.