First part of font refactoring. These changes simplify a few things
but don't do much on their own, they just make it easier to implement the work to come (web fonts, performance improvments in terms of font loading and memory usage). - Font identifier on Linux/Android is now the font file path. This is a temporary measure, but simplifies things a lot for now. - Remove FontListHandleMethods trait in favour of free functions. - FontList::refresh() has no knowledge of FontFamily etc. Instead it takes a closure that the caller provides. - FontList::load_variations_for_family no longer creates the font handle. Instead it takes a closure and provides the name of the font identifier for the variations it finds. - Remove path_from_identifier() - it's no longer required. - create_font_from_identifier() takes an Option<Style>, allowing it to be used to create fonts for family matching purposes where the font size is not important. Tested on Linux + Mac. Builds on Android but not able to confirm it's working correctly.