Clearly the current way `@Module` is handled is bogus. But I think we should fix this with a big change and not an incremental one. Perhaps we should start by searching for `@Module`, rather than starting by searching for `@Provides` ?

* Look up all types annotated `@Module`. Generate full module adapters for these, including looking for `@Provides` methods contained within the type.
* As an error checking step, also look up all methods annotated `@Provides`. If the method's declaring type isn't annotated `@Module`, report an error.