XD-1708 Handle module re-deployments

- Update `DefaultContainerMatcher` to use zkConnection to obtain the list
of containers that stream/job module for the same definition might have already been deployed.
 - Filter out this list from the container candidates from the container matcher
- Update and refactor `ContainerListener`'s stream/job re-deployment methods
XD-1338 prep part 2 (work in progress)

Ultimately the goal is to provide the ModuleDeploymentProperties within the
runtime Module instance (e.g. SimpleModule) so that it can be accessed by
plugins. For example, the StreamPlugin will then be able to use any "consumer"
and/or "producer" properties when calling bindConsumer() and bindProducer()
methods on the MessageBus for a given Module.

While initially the plan was simply to pass those deployment properties along
within the DeploymentMetadata, that class itself overlapped with the recently
added ModuleDescriptor. So, this commit actually removes the DeploymentMetadata
class altogether. The ModuleDescriptor replaced the ModuleDeploymentRequest
object, and it wraps a ModuleDefinition (the "essence" of a module that is
shared by all instances within any stream) while adding the context for a
particular module instance within a stream (the group, index,
sourceChannelName, and sinkChannelName). Those properties are the ones that
were also exposed via DeploymentMetadata.

The most significant part of this commit is the modification to the constructor
for SimpleModule as shown below.

BEFORE:

	public SimpleModule(ModuleDefinition definition, DeploymentMetadata metadata) {

AFTER:

    public SimpleModule(ModuleDescriptor descriptor, ModuleDeploymentProperties deploymentProperties)
XD-1338 fix failing tests
Modify ContainerMatcher contract

- Use `Iterable` containers instead of `ContainerRepository` in ContainerMatcher
- Move the logic to filter the containers out of `DefaultContainerMatcher` and have it in
the `ContainerListener`