SeenPlugin.__anonymous

This mixes in functions that fully implement an IRCPlugin. They don't do much by themselves other than call the module's functions, as well as implement things like functions that return the plugin's name, its list of bot command words, etc. It does this by introspecting the module and implementing itself as it sees fit.

This includes the functions that call the top-level event handler functions on incoming events.

Seen from any other module, this module is a big block of private things they can't see, plus this visible plugin class. By having this class pass on things to the private functions we limit the surface area of the plugin to be really small.