Inventory & action cleanup

* Create InventoryBase class to document Inventory's external interface.
* Update add_host and group_by plugins so they don't use Inventory internals.
* Update group_vars plugin so it doesn't use Inventory internals.
* Add support for a configurable Inventory.