Improve heuristic for creating symbols from name hints
Rename getOutputMap to getAssignments in project node
Compute output symbols eagerly

The list was being build on-demand every time getOutputSymbols was called, making
analysis/planning of queries with thousands of columns expensive
Optimize planning for queries with many columns

The code had a number of O(N^2) algorithms, which is ok for queries referencing
a few hundred columns but quickly breaks down for thousands of columns
Precompute the field indexes to avoid O(N) lookup

This helps when analyzing queries with thousands of fields