implements Tree.parent and Tree.scratchpad, also renames SourceContext to Origin
kills Tree.empty => this notion is incompatible with Tree.parent