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 XD-1500.

ContainerRegistar now updates the deployment node to indicate whether
the deployment succeeded or failed. This is a partial solution
to XD-1549; we still need a way to convey this information to
the admin. The ultimate solution for stream state may require
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.

Addressed review comments.
Fixed compile warning

FlattenedCompositeModuleOptionsMetadata.java:152: warning:
[rawtypes] found raw type: EnumerablePropertySource
	EnumerablePropertySource propertySource = mo.asPropertySource();
	^
missing type arguments for generic class EnumerablePropertySource<T>
where T is a type-variable
XD-1685 Rabbit source Acceptance Test