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

When using Cairo on Windows, it defaults to using the Windows font backend,
and not fontconfig/FreeType (unless Cairo is specifically disabled with `-usecairo=no`)

This patch 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.

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\

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 automatically when it
exits.

----

P.S Is there any guideline for the use of tabs vs. spaces for new code? I've been using spaces (4 per indentation level), but the intermix of tabs and spaces in the current code base is very annoying to work with. Particularly hybrid tab-space lines.