Module::LookupInfo's constructor currently goes over supported languages
trying to figure out the best way to search for a symbol name. This
seems like a great candidate for refactoring. Specifically, this is work
that can be delegated to language plugins.
Once again, the goal here is to further decouple plugins from
non-plugins. The idea is to have each language plugin take a name and
give you back some information about the name from the perspective of
the language. Specifically, each language now implements a
GetFunctionNameInfo method which returns an object of type
Language::FunctionNameInfo. Right now, it consists of a basename,
a context, and a FunctionNameType. Module::LookupInfo's constructor will
call GetFunctionNameInfo with the appropriate language plugin(s) and
then decide what to do with that information. I have attempted to maintain
existing behavior as best as possible.
A nice side effect of this change is that lldbCore no longer links
against the ObjC Language plugin.
The old code checked method.IsValid before pulling out the base name. It seems sensible that an invalid MethodName would return an empty base name, but that does seem to rely a little on implicit behavior? Not sure that's a big deal.