New primitive engine, bugfixes: take 3

- new primitive emulation engine based on BoxesRunTime - no more hardcoded methods
- fix bug causing module to be reinitialized when usage goes in and out of scope - module in heap looked up by its symbol instead of by value
- add primitive and exception tests
scala> { val u = scala.reflect.runtime.universe.asInstanceOf[scala.reflect.internal.SymbolTable]; u.nme.primitiveMethodName(u.TermName("$plus")).toString }
res3: String = add