Change `ObjectFactory` to create collection and map properties whose initial value is an empty collection or map, and add a `convention()` method for collection properties. The "convention" for a property is the value to use when none has been explicitly specified for the property. This changes adds this for collection properties for now. It will be added for all lazy types later.
Ensure that exceptions thrown by various build event actions and listeners are reported on the console and cause the build to fail. Previously, failures thrown by `BuildListener`, `TaskExecutionGraphListener` and `ProjectEvaluationListener` listeners and also by `Action` instances passed to `taskGraph.whenReady()` would be ignored.