basic valdef and assign evaluation

- implement basic env extending with local vars
- update ctfe test: working basic one, add simple assignment and scoping test
interpret methods of primitives such as Int.+

this is basically a big multi-level pattern match against
reciever, method symbol and argument(s)
not really that neat, is it?

perhaps there is a better way to do it?
rework primitives' emulation engine, fix minor issues

- match against whole symbols when emulating primitives' methods
- fix primitives' methods test which was useless as constant expressions were evaluated by compiler
- reformat code to conform scala style
implement if and while exprs, add tests

there has been an issue with matching if and while trees:
Block tree was always matching them first despite not being their parent
quick fix of env and scoping issues

there were some issues concerning env handling:
- evalBlock discarded env produced by evaluating block content, so updates of all variables inherited from outer scope had no effect
- variable updates resulted in copying of entire env
introduce frame stack, reify from heap

- all reflected values are stored in heap now
- basically, heap is updated on any reflect/extend call
- gc is called at block exit to clean up locals and intermediate results
  although it seems to work, it's pretty dumb and  inefficient: it wipes out all values
  not present in any stack frame, thus removing results of new() as well
- reify now takes env, since all jvm values are stored in heap and heap is a part of env
Merge branch 'master' of https://github.com/scalareflect/interpreter
quickfix errors

- add error printing of unsupported emulated methods
make heap immutable, error handling, fix while

- fix discarding env after condition evaluation in while
fix incorrect update of local variables, fix wrong env returned

- fix wrong value updated on stack when updating a variable
- fix env not discarded upon exiting a block
- add error message for reporting interpreter state that could not occur
add tests
update scalatest to 2.1.2
add functions, methods, tests

- add support for function definition and evaluation
- including support for lambdas, closures, high-order functions
- add tests for mentioned features
- implement some more primitives' symbols
add missing do-while interpretation

- add do while test
- clean up comments
minor refactorings

- rename ExplicitEmulator
- deduplicate binOp code
- obtain trees with source() instead of passing then explicitly
- rename extend(_:Heap) and extend(_:Env)
- add todos for handling reify side-effects
- deduplicate doWhile
- remove gc method
- add FunctionValue select assertion
- deduplicate MethodValue.apply
- fix typos
fix typo, that broke tests
Merge branch 'master' of github.com:xeno-by/interpreter into topic/progress

Conflicts:
	interpreter/src/main/scala/scala/reflect/interpreter/internal/Engine.scala
creates an aggregating project
makes Value.reify return JvmResult, not Option[Any]
fixes defaultValue