Fix 13736 - Spellchecker should prefer symbols from inner scopes

spell checker: find the "closest" symbol for the minimum levenshtein distance by counting levels of scopes between the identifier and the found symbol. If the symbol is found through an import, another level is added.

This is needed to let the precise GC pass the test suite, otherwise "gc" is easily reported for spell checker tests.

https://issues.dlang.org/show_bug.cgi?id=13736
Ok, updated. I don't perfectly like the use of 'distance' because the speller function uses this name aswell, but for another metric. But I couldn't find a better matching name.
I also removed the use of a reference from the 'ndist' parameter at the cost of a little more verbosity at the call site.

> I find it rather obtuse from reading the source.

I'm not sure the spellerX/Y functions are less obtuse. It isn't very obvious to me that 'flag' in spellerX means the levenshtein distance.
BTW: I moved the existing function comment to speller(), it seems that's where it is meant to be.