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")
```
No, I added it while trying to make some SSL applications work, so I'm going to change that code when this is merged.