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. 
@Fryguy 
When you get a field value we get back an AR object called MiqAeValue. This function can be used by both the YAML and AR object so it wants to let the intention be known that it wants the value back as a hash for comparison purposes.