XD-1848 more fine grained states via REST API

The status of a stream, as returned by the REST API (and thus the shell also),
may now contain any of the following states:

* deploying (deployment has been initiated)
* deployed (fully deployed based on each of the stream's modules' count properties)
* incomplete (at least 1 of each module, but 1 or more of them not at requested capacity)
* failed (1 or more of the modules does not have even a single instance deployed)
* undeployed (intentionally undeployed, or created but not yet deployed)
XD-1760 Enabling Short Circuiting

Now checking deployment property values and setting the "shortCircuitAllowed"
producer property if the following conditions are satisfied:
1. producer module is not partitioning
2. producer module's count is 0
3. next module's count is 0
4. both producer module and next module have the same criteria (both can be null)

Added "shortCircuiting" tests to AbstractDistributedTransportSingleNodeStreamDeploymentIntegrationTests

RabbitSingleNodeStreamDeploymentIntegrationTests and RedisSingleNodeStreamDeploymentIntegrationTests
now both extends from AbstractDistributedTransportSingleNodeStreamDeploymentIntegrationTests

Addressed PR comments, and rebased
XD-1839: Named channels only allowed in full streams
short-circuit -> direct binding
only set the direct binding property if not explicitly provided
XD-1777 Restore ModuleDeploymentProperties

Update ModuleRequestedPath

Use requested modules path

Fix Path builder

Use requested modules path for arriving container

Update ModuleDeploymentWriter not to use provider