DockerContainerImpl requiredOpenPorts includes entity's children

Fixes #23.
We don't know the behaviour of the child `getRequiredOpenPorts()` method, but I suppose we should assume the contract for the method says it is the entities responsibility to return it's children's required ports, and that will cause recursive calls on their children. Obviously this is a case where the assumption of the contract being enforced failed, so being defensive suggests calling `descendents()` and the `Set<Integer>` will deal with duplicates?