[JIT] JIT trace tree works

How does it provide tracing?
My goal it to make the JIT faster at runtime. By tracing I meant, optional
optimisation based on the execution of the software.

For example if a node within the execution tree is rarely used when it is
invoked JIT will do little optimisations and for parts that is used
frequently multiple optimisations occurs.

-- Kasra

Only compile to LLVM IR the pieces of the code that are hot. Cold pieces just run through the interpreter. Falling off the trace tree returns to the interpreter. Chaining of traces can be done by having traces end with indirect tail calls.