XD-1270: Add states to the deployment of stream

Summary of changes:

1. `ModuleDeploymentWriter` now returns `ModuleDeploymentStatus` which encapsulates everything related to individual module state.
2. The `ModuleDeploymentStatus` objects are aggregated and passed into an implementation of new interface `DeploymentUnitStateCalculator` which calculates the state of the job/stream based on the individual module states.
3. Interface `DeploymentUnit` was introduced to cover the common attributes for streams and jobs.
4. The status for streams/jobs is written into ZK under `/xd/deployments/streams/<name>/status` and `/xd/deployments/jobs/<name>/status`, respectively.
5. As a result, modules for streams and jobs are now under `/xd/deployments/streams/<name>/modules` and `/xd/deployments/jobs/<name>/modules`, respectively.
6. The stream and job repositories have a new method `getDeploymentStatus` which may be invoked to obtain the state of a stream/job.
7. Stream and job states are recalculated when a container joins or leaves the cluster.
IF my comment about removing the "timedOut" enum value is considered, this seems like the spot to pass "failed" instead, along with an errorDescription indicating that failure was due to a timeout.