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
For some reason it won't work with names from the universe we use in interpreter. So I had to fall back to 
```def toRuntimeName(in: Name): String = ru.nme.primitiveMethodName(ru.TermName(in.encodedName.toString)).toString```
Doesn't look right to me.