Currently the lookup for a declaration conflicting with an enumerator is pretty broken,has two issues, both originating from the use of `LookupResult::getAsSingle<NameDecl>()`:
1. `getAsSingle` returns nothing if an overload set or an `UnresolvedUsingValueDecl` is found.
2. `getAsSingle` calls internally `NamedDecl::getUnderlyingDecl` on the result. because of the use of `LookupResult::getAsSingle<NameDecl>()` (see the tests for examples)This cause problems with using-declarations and namespace aliases.
This patch fixes this by removing the bogus use of `getAsSingle<NameDecl>()`. While we are at it, also do the check for a conflicting declaration before calling `CheckShadow` (which implements `Wshadow`). This avoids redundant `Wshadow` warnings where we already have an error.
ThisNote that this is not the only place where `getAsSingle` is mistakenly used, but this is better addressed in a later patch.