Add type coercion for parameterized collections and their entries

Coerce individual entries of collections separately for simpler `ConfigKey` definitions and easier usage in YAML files, including deep resolution of `Task` and `DeferredSupplier` references in maps or collections.

Also adds a new `$brooklyn:object` function for use in YAML blueprints, to instantiate POJOs specified by class name and a set of fields. Example usage as follows:

```
services:
- serviceType: brooklyn.entity.container.docker.DockerInfrastructure
  id: infrastructure
  brooklyn.config:
    docker.container.strategies:
    - $brooklyn:object:
      objectType: brooklyn.location.docker.strategy.CpuUsagePlacementStrategy
      object.fields:
        maxCpu: 0.33
    - $brooklyn:object:
      objectType: brooklyn.location.docker.strategy.BreadthFirstPlacementStrategy
      object.fields:
        maxContainers: 6
    - $brooklyn:object:
      objectType: brooklyn.location.docker.strategy.AffinityStrategy
      object.fields:
        infrastructure:
          $brooklyn:component("infrastructure")
```