Win32+Cairo: Dynamically load fonts for the UI to use

At present, this includes loading fonts from:
* The FontConfig APPSHAREFONTDIR folder e.g: share/fonts
* A subfolder in the user preferences folder, called 'ui-fonts'
  - e.g %APPDATA%\FontForge\ui-fonts\

This allows FontForge to bundle fonts that the user may not have so the UI
can be displayed properly - without installing new fonts to the user's system.

Additionally, the user may change the fonts used *without needing elevated
permissions* because fonts can also be loaded from their preferences folder.

Fonts are loaded privately for FontForge to use, and will be unloaded when it
exits.

Win32+Cairo: Load from the FontConfig APPSHAREFONTDIR folder instead of pixmaps

Win32+Cairo: Also add font loading from user preferences folder

e.g %AppData%\FontForge\ui-fonts\

Win32+Cairo: Scan directory once and manually match extensions

Win32+Cairo: Fix typo in font loader

Win32+Cairo: Runtime check for Cairo usage
Make menus only as wide as they need to be. Fixes #853

This stops menus from being annoyingly wide by calculating the menu width to be
max_item_text_width + max_hotkey_text_width + padding
Where padding is the minimum separation between item and hotkey text. This is
currently fixed at 12 units.
Merge pull request #1437 from jtanx/win32-loadable-ui-fonts

Win32+Cairo: Dynamically load fonts for the UI to use
Merge pull request #1438 from jtanx/menu-width

Make menus only as wide as they need to be. Fixes #853