[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
Merge remote-tracking branch 'origin/master' into new_transcoder