Compiler refactor, step one

All this commit does is fix some of the outstanding compiler warnings in the compiler, and some more concerning issues around that in `write_object_data.cpp` and `module_write_fonts.cpp`.

The former was unbelievably ugly; it was generating compiler warnings from shadowed variables due to its complete lack of structure. I've split the first part into a dozen functions, which fixed the compiler warnings and improved readability. The file is still full of hacks, but those require a more capable parser to remedy.

The latter was prone to access violation (or at best, losing glyphs) due to someone who noticed the unimportance of the glyph sorting step, but did not notice that it was being used to index glyphs. That behavior was hacky, anyway, and so I fixed it.

I have not tested this pull request with timelines, nor have I tested with scripts thoroughly enough. If you have an ENIGMA project with which you can test this, please test it or give the file to me so that I can make sure it works now and in the future.
This is what became of Robert's worker queue, by the way. This diff will make more sense to you if you add ?w=1 to the end of the URL you're viewing it with (to ignore whitespace). I moved a lot of things around and unindented a lot of code in the process, which makes a whitespace-aware diff useless.