Check equality of DataIterator type properly

- As type attribute of DataIterator is of type Object, we can't just
  compare it with type of edge using ==
- Using equals when it is not null and otherwise comparing with ==
- Similar to https://github.com/jruby/jruby/commit/389bcda7f46ac6770cf961f94329d9e4ec422d81
Options added (lifus manual merge)
Initial commit of ir_persistence_facade spec test
Small fixes in spec test outline
IRPersistenceFacade initial commit
Move to proper location
Manual merge from lifus: Initial work on IR Translation process generalization: 1)IRTanslator created. It contains general logic for both Compiler and Interpretor 2) Interpreter corrected to subclass from IRTranslator 3) IR compilation logic moved from Ruby.java to Compiler.java and subclssed from IRTranslator
Manual merge of lifus: Initial work on IR persistence, IRScope#toStringInstr is used as producer of IR
IRPersistenceFacade#persist spec test is corresponds to current development stage
Merge of lifus:  IRFilePathManager now uses String#lastIndexOf instead of Pattern and Matcher
Manual merge of lifus: Initial work on IR reading back from file
Manual lifus merge: Initial work on IRFromStringBuilder
Remove runtime as param from IRBuilder.  Plus, lifus merge: Decouple regexp parser code with ir builder code; some IR Instr building
lifus merge:  Stale code removed, it was partially used in src/org/jruby/ir/persistence/RegexpIRStringParser.java
lifus merge: IROperandFactory functional implementation is started
lifus merge: ROperandFactory functional implementation is started
lifus merge:  Initial work on flex lexer and beaver parser
lifus merge:  Work on grammar, especially related to operands that are not hard to recreate
lifus merge:  Stale code removed, work on IRInstructionFactory started
lifus merge:  Preparations for sample example parsing: Lexer and parser enhacement; Factory classes further implementation; and minor changes