Give more information in error message, allow for more than one too.

Helpful in debugging.
Give more information in error to help debugging.
Also store parents in trie nodes.

Makes more sense in terms of extracting strings.
Use more appropriate name for this const.
Make Walk() behave as a walk function is expected to.

More generic, allow it to run a function against all nodes below
current node.
Add .ToMap() to replace previous Walk function.
Add String() function.

git diff refuses to not be ‘clever’ so also use this commit to get rid
of now-unused `doWalk()`.
Use `ToMap()` to do what `Walk()` used to do :)