@weierophinney What's the story of this? I'm getting confused. I remember @EvanDotPro, in the first prototype of ModuleManager, throwing `is_callable()` for convenience (as an option instead of interfaces)... but interfaces were always the proper way to do it. Now it seems those interfaces exist but live in vacum (?).

Using interfaces to hint module features seems like the way to go for me, because:

 * It's clean and self-explanatory
 * It's self-validating (php will prevent modules not- or partially implementing features)
 * It's fast (`instanceof` possibly much faster than `is_callable()` and `method_exists()`), 
 * It validates arguments. `is_callable()` will not do that for you, so you'll need another set of expensive calls to validate that the method is properly defined, or just ignore it and then have unexpected crashes if developer forgets to ingest a parameter or two.
 * It prevents name clashes (what if I used "getCosoleBanner" method for some completely other purpose? It'd wreck the app)

Why throw this away and instead use PHP4-style, non-OO method of scanning each module for methods based on some arbitrary logic hidden inside factories or module-init methods ?