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