A Plugin represents a modular, extendable class that encapsulates certain Bot functionality into a logical slice. Plugins usually have a set of commands and listeners attached to them, and are built to be dynamically loaded/reloaded into a Bot.
PluginOptions is a class that can be used to configure the base functionality and utilties in use by a plugin.
PluginState is a class the encapsulates all run-time state required for a plugin to exist. It's purpose is to allow for hot-reloading and replacing of plugin code, without destroy/rebuilding run-time data.