Work through the compiler warnings and take action as necessary.

A lot of the new warnings were introduced when garbage collection was reverted, but the changes from 3cb817b8 were not (but not that there should have been a naive revert for that commit anyway)

This fixes most of the warnings, except for:
* Any collab code
* `fontforge/ufo.c` (skipped, I believe @frank-trampe is working on this, plus it [doesn't compile](https://github.com/fontforge/fontforge/commit/784b618bedf2dc6688d8e392b7dedb02fd2de192#fontforge-ufo-c-P151) as-is for me)
* `encoding.c`: Assigning const parameter AdobeStdEncoding to what may be free'd
  - No easy way to resolve this. I've seen this in another place - namely `gtextinfo.c`, where a value will be initialised with a constant/literal value, but then is updated with dynamically allocated values, which may then be freed. I think I fixed the issue in `gtextinfo.c` (albeit not in the cleanest manner)
* `charview.c`: 12910 - Should this be cast or converted? (One is of type `char*`, one is of type `unichar_t*`)
  > mblist_nomm[i].ti.text_untranslated = mblist_nomm[i].ti.text;
* `cvpalettes.c`: Redefinitions of MID_* (Which one is correct?)
* `metricsview.c`: selectUserChosenWordListGlyphs - Comparing GArray pointer against 0 / -1 / -2 ? This one doesn't seem to make sense to me. 
* `windowmenu.c`: Similar question as for charview.c, although even stranger. `text_untranslated` is of type `char*` but `mb[i].shortcut` is of type `unichar_t`, if I recall correctly.

    e.g:
    ~~~~~
    windowmenu.c:270:33: warning: assignment makes pointer from integer without a cast
      mb[i].ti.text_untranslated = mb[i].shortcut;
    ~~~~~

Looking at the logs, the unresolved warnings for `charview.c`, `cvpalettes.c`, `metricsview.c` and `windowmenu.c` relate to work done by @monkeyiq - it would be great if you could have a look at those.