Fixes #8321 - correctly pull Compute Resource image method from compute attrs

as detailed in #8321, compute_attrs is an ordinary has, so we need to evaluate cr.image_param_name _first_ and then get the resulting key from the hash. As such, PXE hosts were working fine, but image hosts were not. Added tests to cover this for the future.

Also updated the template factories to work slightly better - os_default_template wasn't creating the associations between the OS and template objects (i.e operatingsystem.config_templates == [] meaning the join entry was useless).