##### SUMMARY
Since `add_host` and `group_by` actions only modify the runtime inventory, hosts/groups/vars added by them don't survive a `meta: refresh_inventory` call (since that call completely clears the runtime inventory). 

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
InventoryManager

##### ADDITIONAL INFORMATION
After some internal discussion, the general consensus seemed to be that this behavior is an undesirable default. The `add_host` and `group_by` actions should manage a more persistent state independent of the runtime inventory, then apply their changes to the running inventory. When a `meta: refresh_inventory` occurs, the normal dynamic inventory clear/refresh should happen, then reapply the add_host/group_by state. This should probably be the default behavior, but a config switch or a different `meta` action (or an arg to it) to emulate the current behavior could also be created if necessary.

''' Creates and manages inventory '''
    def __init__(self, loader, sources=None, parse=True, cache=True):
        
        self._loader = loader
        self._inventory = InventoryData()
        
        self._restriction = None
        self._subset = None
        
        self._hosts_patterns_cache = {}  
        self._pattern_cache = {}  
        
        if sources is None:
            self._sources = []
        elif isinstance(sources, string_types):
            self._sources = [sources]
        else:
            self._sources = sources
        
        if parse:
            self.parse_sources(cache=cache)
    @property
    def localhost(self):
        return self._inventory.localhost
    @property
    def groups(self):