Support Choose in evaluation, range positions, tracing.


- Simplify code generation by replacing CompilationEnvironment with a
   simple scope state.

- Support Choose construct in both evaluators.
    
- Introduce RecursiveEvaluator (renamed from Naive) and TracingEvaluator
  which tracks intermediate values as well.
    
- Introduce offset as well as ranged positions, extract all positions
  from trees. Try to propagate them as much as possible. Introduced
  .copiedFrom
    
- Remove dead-code, and improve TreeOps a bit.
   
- Introduce Pretty-printer arguments