XD-1696: Job deploy manifest support

- Use `JobDefinitionRepository` in DeploymentSupervisor
- Add `JobFactory` to construct `Job` instance with deployment properties
and job module descriptor.
- Update `JobDeploymentListener`
  - Use JobFactory to construct the job module instead of using jobDefinition
  - Explicitly create `JobModuleDescriptor` with moduleLabel as `jobmoduleName-0`
- Update `ContainerListener`
  - Handle `onChildAdded` and `onChildLeft` events for orphaned job deployments
and re-deployment of departed container's job modules respectively
  - Fix redeployment of stream module in case of a matching container already
holds the same module deployed
- Update `ContainerRegistrar`
  - Use JobFactory to load Job
- Refactor listeners and ContainerRegistrar
  - Inject StreamFactory, JobFactory
  - Create DeploymentUtility that has utility methods for parse/handle deployment
properties
  - Create DeploymentHandler abstract class that other listener classes could extend
- Update `job deploy` command
  - to use properties as request parameters
- Usage of `LOG` -> `logger`