### SUMMARY

Update validate-modules to report messages using named error codes like `version-added` instead of error numbers like `E305`.

This would match the behavior of other tools we use, such as pylint, which have one named error code per rule. This will also make ignore entries much easier to read.

Doing this before 2.9 is released will avoid potential backwards compatibility issues with ignore entries in collections.

##### ISSUE TYPE

Feature Idea

##### COMPONENT NAME

validate-modules

doc_info = self._get_docs()
        doc = None
        documentation_exists = False
        examples_exist = False
        returns_exist = False
        
        
        filename_deprecated_or_removed = False
        deprecated = False
        removed = False
        doc_deprecated = None  
        if self.object_name.startswith('_') and not os.path.islink(self.object_path):
            filename_deprecated_or_removed = True
        
        metadata = None
        if not self.collection:
            if not bool(doc_info['ANSIBLE_METADATA']['value']):
                self.reporter.error(
                    path=self.object_path,
                    code=314,
                    msg='No ANSIBLE_METADATA provided'
                )
            else:
                if isinstance(doc_info['ANSIBLE_METADATA']['value'], ast.Dict):
                    metadata = ast.literal_eval(
                        doc_info['ANSIBLE_METADATA']['value']
                    )
                else: