Track symbol ast.Identifier nodes rather than just InputPosition

This is also cheaper than using a SortedSet