New primitive engine, bugfixes

- 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
Can be simplified with https://github.com/xeno-by/scala/blob/2.11.x/src/library/scala/runtime/ScalaRunTime.scala#L38