Fix font sizing for cross-platform compatibility

Here are the promised font changes.

The solution to the Windows problem turned out to be obvious: it needs to store the pixel size instead of the point size. So create a font, set the point size as desired, and then read the pixel size for storing. Easy.

But, there are a lot of hardcoded font sizes which assume the old wrongly-working font sizing algorithm we used on Windows.
So most of the rest of these changes are going through fixing those.

The end result seems to be much better font sizing on all platforms, and much more cross-platform consistency. (Of course there are still many per-platform special cases in the code.)

I'm not saying what I have here is perfect - I can still see a few things that might want tweaking - but it's a lot better than what we have at the moment.

I have tested on Windows 7, Linux Mint 17, and OS X 10.10.
I have not tested on Windows XP or on other Linux distros.

Play with it, with a clean config file, and let me know what you think and whether I need to change anything.