Changed the way DeserializerFactory config is handled, less cluttered now
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerFactory.java
index 52041cb..5079eb3 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerFactory.java
@@ -43,145 +43,40 @@
     protected final static Deserializers[] NO_DESERIALIZERS = new Deserializers[0];
 
     /*
-    /**********************************************************
-    /* Helper class to contain configuration settings
-    /**********************************************************
-     */
-
-    /**
-     * Configuration settings container class for bean deserializer factory
-     */
-    public abstract static class Config
-    {
-        /**
-         * Fluent/factory method used to construct a configuration object that
-         * has same deserializer providers as this instance, plus one specified
-         * as argument. Additional provider will be added before existing ones,
-         * meaning it has priority over existing definitions.
-         */
-        public abstract Config withAdditionalDeserializers(Deserializers additional);
-
-        /**
-         * Fluent/factory method used to construct a configuration object that
-         * has same key deserializer providers as this instance, plus one specified
-         * as argument. Additional provider will be added before existing ones,
-         * meaning it has priority over existing definitions.
-         */
-        public abstract Config withAdditionalKeyDeserializers(KeyDeserializers additional);
-        
-        /**
-         * Fluent/factory method used to construct a configuration object that
-         * has same configuration as this instance plus one additional
-         * deserialiazer modifier. Added modifier has the highest priority (that is, it
-         * gets called before any already registered modifier).
-         */
-        public abstract Config withDeserializerModifier(BeanDeserializerModifier modifier);
-
-        /**
-         * Fluent/factory method used to construct a configuration object that
-         * has same configuration as this instance plus one additional
-         * abstract type resolver.
-         * Added resolver has the highest priority (that is, it
-         * gets called before any already registered resolver).
-         */
-        public abstract Config withAbstractTypeResolver(AbstractTypeResolver resolver);
-
-        /**
-         * Fluent/factory method used to construct a configuration object that
-         * has same configuration as this instance plus specified additional
-         * value instantiator provider object.
-         * Added instantiator provider has the highest priority (that is, it
-         * gets called before any already registered resolver).
-         * 
-         * @param instantiators Object that can provide {@link com.fasterxml.jackson.databind.deser.ValueInstantiator}s for
-         *    constructing POJO values during deserialization
-         */
-        public abstract Config withValueInstantiators(ValueInstantiators instantiators);
-        
-        public abstract Iterable<Deserializers> deserializers();
-
-        public abstract Iterable<KeyDeserializers> keyDeserializers();
-        
-        public abstract Iterable<BeanDeserializerModifier> deserializerModifiers();
-
-        public abstract Iterable<AbstractTypeResolver> abstractTypeResolvers();
-
-        public abstract Iterable<ValueInstantiators> valueInstantiators();
-        
-        public abstract boolean hasDeserializers();
-
-        public abstract boolean hasKeyDeserializers();
-        
-        public abstract boolean hasDeserializerModifiers();
-
-        public abstract boolean hasAbstractTypeResolvers();
-
-        public abstract boolean hasValueInstantiators();
-    }
-
-    /*
     /********************************************************
     /* Configuration handling
     /********************************************************
      */
 
     /**
-     * Method for accessing factory configuration (NOT the general
-     * {@link DeserializationConfig}!)
-     */
-    public abstract Config getConfig();
-    
-    /**
-     * Method used for creating a new instance of this factory, but with different
-     * configuration. Reason for specifying factory method (instead of plain constructor)
-     * is to allow proper sub-classing of factories.
-     *<p>
-     * Note that custom sub-classes <b>must override</b> implementation
-     * of this method, as it usually requires instantiating a new instance of
-     * factory type. Check out javadocs for
-     * {@link com.fasterxml.jackson.databind.deser.BeanDeserializerFactory} for more details.
-     */
-    public abstract DeserializerFactory withConfig(Config config);
-
-    /**
      * Convenience method for creating a new factory instance with additional deserializer
      * provider.
      */
-    public final DeserializerFactory withAdditionalDeserializers(Deserializers additional) {
-        return withConfig(getConfig().withAdditionalDeserializers(additional));
-    }
+    public abstract DeserializerFactory withAdditionalDeserializers(Deserializers additional);
 
     /**
      * Convenience method for creating a new factory instance with additional
      * {@link KeyDeserializers}.
      */
-    public final DeserializerFactory withAdditionalKeyDeserializers(KeyDeserializers additional) {
-        return withConfig(getConfig().withAdditionalKeyDeserializers(additional));
-    }
+    public abstract DeserializerFactory withAdditionalKeyDeserializers(KeyDeserializers additional);
     
     /**
      * Convenience method for creating a new factory instance with additional
      * {@link BeanDeserializerModifier}.
      */
-    public final DeserializerFactory withDeserializerModifier(BeanDeserializerModifier modifier) {
-        return withConfig(getConfig().withDeserializerModifier(modifier));
-    }
+    public abstract DeserializerFactory withDeserializerModifier(BeanDeserializerModifier modifier);
 
     /**
      * Convenience method for creating a new factory instance with additional
      * {@link AbstractTypeResolver}.
      */
-    public final DeserializerFactory withAbstractTypeResolver(AbstractTypeResolver resolver) {
-        return withConfig(getConfig().withAbstractTypeResolver(resolver));
-    }
+    public abstract DeserializerFactory withAbstractTypeResolver(AbstractTypeResolver resolver);
 
     /**
      * Convenience method for creating a new factory instance with additional
      * {@link ValueInstantiators}.
      */
-    public final DeserializerFactory withValueInstantiators(ValueInstantiators instantiators) {
-        return withConfig(getConfig().withValueInstantiators(instantiators));
-    }
+    public abstract DeserializerFactory withValueInstantiators(ValueInstantiators instantiators);
     
     /*
     /**********************************************************