##### 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.

'''
        Runs handlers on those hosts which have been notified.
        '''
        result = self._tqm.RUN_OK
        for handler_block in iterator._play.handlers:
            
            
            
            for handler in handler_block.block:
                try:
                    if handler.notified_hosts:
                        result = self._do_handler_run(handler, handler.get_name(), iterator=iterator, play_context=play_context)
                        if not result:
                            break
                except AttributeError as e:
                    display.vvv(traceback.format_exc())
                    raise AnsibleParserError("Invalid handler definition for '%s'" % (handler.get_name()), orig_exc=e)
        return result
    def _do_handler_run(self, handler, handler_name, iterator, play_context, notified_hosts=None):