Library and DesktopGame unit tests + DesktopGame refactoring

Still work in progress.

Things I want to do before merging:

- [ ] Emerge a desktop file parser interface (implemented by both strict and permissive parsers)
- [ ] Extract the remaining parser fallback logic from DesktopGame.get_info() and get_exec()
- [ ] Choose between "Broken" and "Invalid" for DesktopGame tests
- [ ] DRY DesktopGenresConverter
- [ ] Find a better solution for the `Desktop` subdir (I wanted to use a namespace, but there is already a `Desktop` class (which is actually a parser)
- [ ] Decide whether I should use an `I` prefix for interfaces
- [ ] Extract some `remove_extension(filename)` utility method
- [ ] Rename and refactor `NewLibraryTest` and `AddGameTest` (to match the conventions used in `DesktopGameTests`)
- [ ] Use the right test double terminology at the right place
- [ ] Move ILanguages to its own file (and rename it ?)
- [ ] Move IGameFactory to its own file
- [ ] Rename Library.systems to *.game_factory
- [ ] Only parse `*.desktop` file once in `StrictDesktopGameParser`