Generates and returns a job object with the following:

        * a run method, as defined in the readme
        * a list of posix-like arguments
        * a dictionary of data
        * templates: a dict-like interface of (template_name, template_body) pairs

def parse_job(self, run_method, options):
        """
        Generates and returns a job object with the following:

        * a run method, as defined in the readme
        * a list of posix-like arguments
        * a dictionary of data
        * templates: a dict-like interface of (template_name, template_body) pairs
        """

        for job_dict in run_method(options, self._data):

            # unpackaging dict
            host = job_dict['host']
            name = job_dict['name']
            template = job_dict['template']
            job_data = {
                'name': name,
                'host': host,
                'job_data': job_dict['job_data']
            }

            template_body = self._templates[template]
            config_xml = specialize_content(template_body, job_data)

            yield MiuraJenkinsJob(
                self._jenkinsapi_cache[host],
                name,
                config_xml
            )