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. 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")
```
This will break persistence.  Can we keep the old class as a subclass of the new class?