Refine [Named|Polymorphic]DomainObject[Collection|Container] extensions
by making their whole API available with the invoke syntax
and adding reified getByName<T>(name) {} to NamedDomainObjectCollection
and adding reified maybeCreate<T>(name) to PolymorphicDomainObjectContainer
adding more coverage along the way
Signed-off-by: Paul Merlin <paul@gradle.com>