Note that locateDeclAt() now does *not* canonicalize the declaration anymore,
since that would now lead to "AmbiguousSymbol" when there's a single declaration under the cursor that has multiple canonical declarations.
Instead, only canonicalize *after* checking how many decls we've found under the cursor.
This will allow renaming virtual methods with size_overridden_methods() > 1 in a follow-up commit.