LPS-46267 Split Settings into ModifiableSettings (read-write) and Settings (read-only).

This is done to make clear the difference between Settings which only decorate or alter the search strategy of configuration keys (Settings) and those which persist or store the real configuration keys (ModifiableSettings).

Also create a BaseModifiableSettings class and move some methods from BaseSettings into it.

Add new methods to BaseSettings to handle having a parent settings associated to the current settings instance from which to pick default values. We decided to go with the terminology of "parent" for its similitude with how classloaders work.
LPS-46267 MemorySettings should implement ModifiableSettings
LPS-46267 Move "modification" tests to BaseModifiableSettings and add to BaseSettings methods to test proper retrieval of the associated ModifiedSettings
LPS-46267 Adapt TypedSettings to use ModifiableSettings for reset() and setValue()
LPS-46267 FallbackSettings does not need to be modifiable
LPS-46267 PropertiesSettings does not need to be modifiable.
LPS-46267 PortletPreferencesSettings must implement ModifiableSettings

Leverage the new parentSetttings handling of BaseSettings to simplify
LPS-46267 ParameterMapSettings does not need to be modifiable.

A consequence is that it no longer needs to provide a getKeys() method
LPS-46267 Reduce duplication and simplify ParameterMapSettings
LPS-46267 ArchivedSettings should extend ModifiableSettings
LPS-46267 Adapt WikiSettings to use ModifiableSettings.
LPS-46267 Adapt configuration and archived setups actions to use ModifiableSettings.
LPS-46267 Adapt tests to use ModifiableSettings.
LPS-46267 Move the logic to obtain default values from the parent settings to BaseSettings.

That way all Settings implementation treat default values the exact same way (we had found some small inconsistencies).

Also, add tests for it.
LPS-46267 Fix FallbackSettingsTest: due to the previous commit, the logic for default value treatment has changed and the test must be changed.
LPS-46267 Adapt WikiPortletInstanceSettings to use ModifiableSettings.
LPS-46267 Allow creating Settings subclasses without a parent without having to explicitly call super(null)
LPS-46267 Rename getKeys() to getModifiedKeys() to make it clear that it does not return all keys (i.e including those of parents) but just those that have been modified through this ModifiableSettings
LPS-46267 SF
LPS-46267 Fix compile errors