(PUP-4374) Make *=> work for Collectors
Before this it did not work to splat a hash in a Collector. e.g.
` Notify <| title == 'something' |> { * => { message => 'hello' }} `
As this would simply fail.
This corrects the faulty behavior. Since the logic was first written, it
is now simple to turn the 4x expressions into Resource::Parameter
values. This was not used in the CollectorTransformer. The model was
also not prepared to handle an AttributesOperation (as opposed to a
single AttributeOperation). This was fixed by switching to a reference
to the base class for both those model classes.
The model checker also had issues with a Collector as parent of the
AttributesOperation - it can only be used in certain places (not in any
hash etc.). This commit refactors that logic to be easier to read (and
also accept a Collector container of the AttributesOperation).