Maintain complete Path information during reprinting

Previously, a `Path` reflected only the sequence of `Node` objects along the path from the root of the AST to a given node, skipping intermediate properties such as arrays, and forgetting followed properties.

Now, the reprinting code is much more careful about creating a chain of `Path` objects that could be used to trace the path from any visited node back to the root.