Initial effort for a plugin framework.
Adding unit tests and run() implementation.
First pass at reading in plugin configuration.
Add configuration to BaseConduit.
Hooking in PluginManager to the CLI.
Add plugin to handle post_product_id_install
add plugin config file for product_install
Add installing plugins and plugin-confs to Makefile
Add ProductConduit and BasePluginManager

ProductConduit provides a list of installed products on
'post_product_id_install'

Change PluginManager to BasePluginManager, and add a
PluginManager class that knows about the default
config.
make productid call 'post_product_id_install' slot

Also, keep track of a list of the product certs we
install. Pass this to 'post_product_id_install' slot
Adding slots for pre and post registration.
Change default plugin location to /usr/share/rhsm-plugins
Add rhsm-plugin's to spec file
Fix name of plugins dir macro (rhsm_plugins_dir)
right name for this plugin
add base_plugin and plugins.py, sort py files in spec
Add FactsConduit, SlotNameException

FactsConduit is for facts related plugins

SlotNameException is raise if core code calls
a slot that does not exist.
Add test for missing slot name
Add a facts plugin

The example plugin demostrates calling 'facter' and
adding it's facts to our collection of facts, with
keys prepended with 'facter'.

NOTE: this isn't meant to get shipped, just a semi
useful example of what this type of plugin could do
Add slots for pre and post subscription.