Callback refactorings

- *Remove GModule*. Instead of automatically connecting two functions,
  we can connect them manually. This makes it more clear what is
  happening, gives us flexibility over what the `user_data` are, and
  gives us the programmatic control needed to build better abstractions.

- *Consistent callback naming convention*. As now documented in
  DEVELOPING.md: name callbacks after their GtkBuilder id and signal,
  preceeded with `on_`.

- *Move all callbacks out from main.c*. This introduces a `window.c`.

- *More `static` declarations for local functions*. This helps enforce
  the fact that they are local and prevent others from trying to call
  them or even being confused about them.

- *Rename cb_data to state*. The cb_data ("callback data") was really
  the program state. Name it correctly and give it its own file.

- *Add a comment on each `#endif`*. Sometimes the `#endif` can be
  confusing, so prepare for those dark times by adding a comment at each
  `#endif` explaining what it is ending.