XD-1548: Refactor duplicate code in Listeners

Created class `ModuleDeploymentWriter` to write module deployment requests to `/xd/deployments/modules` for both streams and jobs. This class is now used by `ContainerListener`, `StreamDeploymentListener` and `JobDeploymentListener` for module deployments.

`ModuleDeploymentWriter` also catches `NodeExists` exception as described in https://jira.spring.io/browse/XD-1500.

`ContainerRegistar` now updates the deployment node to indicate whether the deployment succeeded or failed. This is a partial solution to https://jira.spring.io/browse/XD-1549; we still need a way to convey this information to the admin. The ultimate solution for stream state may require https://jira.spring.io/browse/XD-1591.

`DefaultContainerMatcher` was added to the application context so that the same instance is shared across the application; this ensures the round robin distribution of modules.