Fix a set of problems with the configuration interface in which there were a
number of cases in which insufficient validation was performed. In particular,
if a new configuration object was added over protocol or an existing
configuration object was changed from disabled to enabled, then the server
would only perform generic validation for that component and would not have any
way to perform more detailed validation that could detect larger numbers of
problems.
This change introduces a new "isConfigurationAcceptable" method for lots of
different types of configuration objects. There are default implementations in
the superclasses for those objects, so components aren't required to implement
this method, but they can if appropriate and these changes also include
updating all components that implement the ConfigurationChangeListener
interface in a non-trivial manner so that they provide this method to perform
the same kinds of validation.
This fix was initially targeted at issue #1861, but it should also correct
problems like those reported in issues 1932, 1936, and 1937.