Clean up ancestor chain, even if code is uglier.

Ensure that each search class has adds at most
one accessor module and one search method module
to the ancestor chain, named for that search class.
Subsequent macro calls modify that module.
Let UndefinedOption be a real class