WIP: Port to gi-gtk
These are the modern bindings and will also allow us to switch to GTK 4 later.
Also we switched most functions from String to Text since that is what the bindings expect.
This does not build yet, only had time for a partial port.
Cairo still needs to come from gtk2hs https://github.com/haskell-gi/haskell-gi/wiki/Using-Cairo-with-haskell-gi-generated-bindings