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 :each is the default so you do not need to specify it here.  Applies to all the other specs in this PR as well.