(PreferencesWindow) Define and use a PreferencesChangedListener

Prior to this change, the preferences were not applied correctly.
(ScriptingEditor) Fix the logic for soft-tabs

It was inverted !!
(ScriptingEditor) The tab size should be always set (for soft tabs or real tabs)

Change the PreferencesWindow accordingly.
(ScriptingEditor) Perform the space/tab conversion when the user clicks on 'Format'

...instead of doing it automatically when the preferences are applied. An automatic
formatting is unexpected for the user.
Move the formatting code from ScriptingEditor to ScriptingPanel

...where it belongs more naturally.
(ScriptingEditor) Fix the saveState call when closing a single tab
Slightly refactor the logic for tab-closing so that the state is properly saved

Before this commit, the opened-tabs state was not saved when closing a tab by clicking
on the close icon.
(ScriptingEditor) Store the plugin preferences in "plugins"

Before it was in "plugin" (singular), which is reserved for the kernel
global plugin preferences.
(ScriptingEditor) Do not save the state when closing the editor (already saved)

This was wrongly saving an empty state...
Store the preferences in the fully-qualified plugin name

This is more in-line with the spirit of these identifiers
Move the recent files list to a dedicated class, and improve it.

Now stored in a specific section of the settings XML (before was
mangled with the opened files list).

Stored at each file load/close.
Put the filename first in the items of the recent files menu
(PreferencesWindow) Also store the global preferences at the proper place
(PreferencesWindow) Separate the model from the view, to enable Apply and Cancel
Move the listening to preference changes to the ScriptingPanel

...also make sure they are applied at panel creation, and even if the
textarea is empty.
(ScriptEditor) Fix again the editor state saving.
(ButtonTabComponent) Fix the tab name, broken by commit ed04e9a593
Tweak the XML handling (state save, recent files) to avoid having blank lines in the XML file