Support for copy and compare of automate class, instance and methods


 The UI needs backend support for copying classes, instances and methods from a readonly domain like ManageIQ to an editable customer domain. Before an instance can be copied we have to compare the class schema, before overlaying an instance or a method we need to compare the values and the scripts. Comparison is a precursor to copying the automation components.
The comparison functions can also be used to compare automation components stored in YAML when importing automation models.

The comparison functions return 3 status values
- CONGRUENT to indicate that the component matches completely (class schema is identical, instance values are identical, method parameters and scripts are identical)
- COMPATIBLE to indicate that the component doesn't have a identical match but is compatible (e.g. class schema has new fields, instances have new values)
- INCOMPATIBLE to indicate that the components don't match at all(e.g datatype/aetype are different in class schema)

By default an instance can only be copied if the Class Schema is either CONGRUENT or COMPATIBLE. A user can still force a copy of instances with INCOMPATIBLE schemas but would have to edit the instance after it has been created. 
@mkanoor This test is taking about 30 seconds to run locally on my machine.  I'm afraid that time could increase dramatically cc monitor boxes.  Can you look at improving the timings here?