editor: add file-marks api to store positions within files.

GbEditorFileMarks is a manager API around reading and writing the file
marks to/from disk. Additionally, it will hold on to the marks in memory
during the lifetime of the process.

The file mark itself contains a uri, line, and column.

The format for the marks file is:

 "line:column uri\n"
application: load file-marks on application startup.
file-marks: fix function name for fetching mark.
file-marks: create new GbEditorFileMark if mark did not exist.
file-marks: add synchronous variant of saving marks

This is useful for the shutdown case where we need to persist file-marks
back to the state file.
app: save file-marks on application shutdown.
file-marks: scroll to last position in file when opening.
gtk: add more util helpers for gtk

These helpers add some convenience functions for things we've been doing
all over the place manually.

It also adds a workaround for the inability to scroll to the right offset
until textlayouts have been processed enough to know where our offset is.
snippets: add guard snippet
snippets: remove some debugging code
editor: save file mark when closing a tab
editor: add function to restore file mark in an editor tab.
editor: load file mark after opening a file

This now uses workaround code that works around faulty Y positions in
gtktextview.