Minor cleanups in Selector

Removed unused data member selRow.
Keep reference to LinkApp instead of pointer.
Call LinkApp::getSelectorBrowser once and store result.
Renamed fontheight to fontHeight.
Use iY consistently: store the item's y-coordinate in it.
Improved Selector's handling of the folder icon

Renamed fontHeight to lineHeight, since it is computed using both the
font's line spacing and the height of the folder icon. For the latter,
use the actual icon height plus two pixels spacing instead of the
hardcoded value of 20 (16 height + 4 pixels spacing).

Fixed recently introduced bug where "top" is added to the folder icon
y-coordinate twice. Also center the icon vertically when a large font
is used.

Don't crash if the folder icon is missing. This could only happen on
broken installations though. Also don't search for the icon twice:
SurfaceCollection::skinRes already calls addSkinRes internally when
there is no cached surface for the key.
Log surface load failures at DEBUG level instead of ERROR

Since we no longer check file existance before attempting a load,
load failures are often not errors. For example a missing preview
image is harmless.
Redistribute any leftover vertical space in Selector
Make Selector robust against an empty file list

This can happen on a directory with 0 file matches when directories are
not being shown (otherwise there is either ".." or a subdir).

Since there is nothing to be selected, the Accept button is disabled
and no cursor is shown.
Renamed SettingsDialog::voices to settings

I have no idea where that original name came from, but it didn't make
any sense to me.
Use unique_ptr to make ownership of MenuSettings explicit
Made SettingsDialog::exec() return whether a setting was changed

Previously, exec() always returned true and a separate edited() method
would indicate whether any settings were changed.
Made new "no items" text in Selector translatable
Deal gracefully with the selector being started on a non-existent dir

If directory browsing is enabled, fall back to the closest existing
parent directory. If directory browsing is disabled, show empty list.
Do not list ".." as a subdirectory of the root directory

In Linux "/.." exists and loops back onto the root. But for the user
it is confusing to see a ".." entry listed that does nothing when
selected, so hide it.
Avoid out-of-range lookup when FileLister::browse is passed empty string

When the path is the empty string, it is handled as the current working
directory, which is consistent with how relative paths are handled.
When selector goes up from the root directory, stay in the root

Previously the selector would exit, but I don't see the logic in that.
When going up a level in the selector, put cursor on old dir

This adds a sense of continuity to the navigation.