Modifying and saving files should keep the line order and other things as much as possible
<!-- --------Before Creating a New Issue-----------
* Search the issue tracker to verify the issue has not already been reported.
* Keep report contents limited to the necessary information required to fix the issue.
---------Add your issue details below----------- -->
# Description
<!-- What is the current behavior and what is the expected behavior? -->
<!-- If the issue is visual/graphical, please attach screenshots of the problem. -->
I think it's a well known problem that KiCad want's to be VCS friendly but really isn't as much as it could be. Today I noticed this:

This is a diff between the latest commit and the working tree changes. What I did was mostly moving component value texts in the Fab layer. I certainly didn't change any footprint graphics. For some reason KiCad changed the order of all "fp-line" text lines. It seems to have reversed the order. Now the file is full of unnecessary changes which I didn't make.

Would it finally be possible to have a consistent file reading/writing system and/or internal data structure which doesn't make any unnecessary changes (including line order, line breaks and whitespace)? I would accept changes when reading a file in because it may have been produced by other means, and of course accepting changes made by scripts or changes made when saving after a script has modified the data, but if the file is written, modified and saved by KiCad's built-in functionality, those kind of changes shouldn't happen.
# KiCad Version
I'm not sure about the exact versions with which I handled the file, but they are from 5.1 series.
```
Application: KiCad
Version: (5.1.5-103-gddedf2e04)-1, release build
Libraries:
wxWidgets 3.0.4
libcurl/7.66.0 OpenSSL/1.1.1d (Schannel) zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.1.1) nghttp2/1.39.2
Platform: Windows 7 (build 7601, Service Pack 1), 64-bit edition, 64 bit, Little endian, wxMSW
Build Info:
wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8)
Boost: 1.71.0
OpenCASCADE Community Edition: 6.9.1
Curl: 7.66.0
Compiler: GCC 9.2.0 with C++ ABI 1013
Build settings:
USE_WX_GRAPHICS_CONTEXT=OFF
USE_WX_OVERLAY=OFF
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_PYTHON3=OFF
KICAD_SCRIPTING_WXPYTHON=ON
KICAD_SCRIPTING_WXPYTHON_PHOENIX=OFF
KICAD_SCRIPTING_ACTION_MENU=ON
BUILD_GITHUB_PLUGIN=ON
KICAD_USE_OCE=ON
KICAD_USE_OCC=OFF
KICAD_SPICE=ON
```
issue