Introduce TokenResolver, TreePointer

A TokenResolver takes a ReferenceToken as an argument, and has an abstract
.get() method to return a TreeNode from that ReferenceToken.

A TreePointer is an ordered collection of TokenResolver instances.

Start to make tests to ensure that the list of tokens is built accurately.