Improve indentation debugging.

Show indentation decisions made next to the token dump. This makes it
easier to see which tokens are contributing which indentation decisions.
Fixup identifiers that may have been confused for keywords.

JS allows strings like 'catch' to be used for identifiers despite
looking a lot like a keyword. The lexer currently can't tell the
difference. Therefore fixup such symbols during the metadata pass where
the context necessary to tell them apart is available.
Check both parens and brackets when picking a preferred hard stop.
Add 'function' as a hard stop and also respect active hard stops