Reworked SubnodeConfiguration to use a Synchronizer.

A SubnodeConfiguration per default shares its Synchronizer with its parent
because both configurations operate on the same node set. In the past
SubnodeConfiguration instances created with a subnode key (for detecting
structural changes of its parent) checked their root nodes on each read
access. Now such checks are performed when the parent configuration is
changed.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/trunk@1481154 13f79535-47bb-0310-9956-ffa450edef68