support for conversions between values and trees

This is very handy when interpretation of high-level trees calls into
interpretation of corresponding low-level trees with some of the trees
already evaluated during one of the previous steps.
adds Definitions.scala that contains references to useful symbols
instantiate now takes a Type, not a ClassSymbol

Java does have reified generics in the form of arrays, so just knowing
a symbol of something we're going to instantiate isn't going to cut it.

(It's enough to have a symbol when we want to express just List, but
we need a type to express something parameterized with other types).
interprets type tests and type casts

Another thing I missed when sketching the prototype. Type arguments of
applications can't be discarded in general case, because they do matter
in case of isInstanceOf and asInstanceOf intrinsics
interprets matches
aliases Result and Results to Tuple2
eliminates unchecked warnings
Merge pull request #8 from xeno-by/master

results of today's hacking: a sketch for match interpretation and a few more minor things