module interpretation

- implement module interpretation
- def evaluation return values in order to be able to initialize module body
- add basic module tests
fix primitives passed by-reference instead of by-value

- fix values not being copied during assignment making new value reference same object from heap
- add tests covering issues above
module method symbol resolution

- select methods from module parents
- OO tests stub
object initialization

- squash all inherited fields, methods, etc into single(current) object
- instead of doing select(...).symbol mappings, parent resolution is done by adding fake parent symbol references
object instantiation, runtime polymorphism

- add new(...) implementation: class object construction with subsequent constructor call
- add member symbol resolution in runtime
- add basic OO model tests
- add error handlers for object model
object initialization reworked

- initialization done in correct order(i guess): consArgs -> fields, call super, eval rest of stats
- workaround missing symbol resolution with field name lookup
fix importing heap from captured env in functions

 - remove heap importing from captured env during function call
add object tests
select from super impl

- support selecting members from super
- correctly resolve overrides in super selects
- add super test
add Unit value test
multiple parameter list impl

- add function multiple parameter list evaluation
- add multi parameter list tests
multiple parameter list constructor

- add multiple parameter list support in object constructors
- refactor ModuleValue(move module initialization code from ObjectValue)
- add multiple parameter cons test
lazy val interpretation fix

- pass tree.children to evalBlock() instead of qq-matched stats
- workaround qq bug(lazy val accessor functions skipped in block qq case)
- add lazy val test
code cleanup

- use _: Block instead of quasiquote
- remove obsolete commented out lines
- use ListMap instead of Map in Object
- rename _super to static in selects
- remove obsolete call to extendHeap in FunctionValue.apply()
- use Nil to match an empty list
- move initialized field to ModuleValue
- rename ObjectCons* to ObjectCtor*
- refactor extraction of templates from ImplDefs
- rename params to argss in ObjectCons.apply()
- rename selectOverride to selectMethod
- remove excess code in static method selection
- fix typo in ObjectValue.select() env->env1
- fix typo in error message
lazy initialization of module body
fix overloading in selectMethod

- find overloaded method by its type signature
- add overloading test
inline evalModuleDef into evalLocal
code cleanup

- remove redundant cast to ValDef
immutable approach to module initialization

- make modules stateless, extract class for initialized modules
- fix module forward lookup
- add forward lookup test
fix zero parameter list functions evaluation

- parameterless functions applied when accessed
- add test for issue above