Add support for setting custom css classes
Wanted to add this issue mostly so we don't forget about it and because it's personally important to me.

Currently, there is no official way to set a custom CSS class to a widget, which you could style as you'd want.

There is an unofficial hacky way that we talked about (documented here for any future reader) - Use the `afterBuild` hook :

```nim
import owlkettle, owlkettle/gtk

viewable RedCounterButton:
  count: int = 0
  
  hooks:
    afterBuild:
      let
        internalWidget = state.unwrapInternalWidget()
        styleContext = gtk_widget_get_style_context(internalWidget)
      gtk_style_context_add_class(styleContext, "red-background")

method view(state: RedCounterButtonState): Widget =
  result = gui:
    Button:
      text = $state.count
      proc clicked() =
        state.count += 1

viewable App:
  discard

method view(app: AppState): Widget =
  result = gui:
    Window:
      RedCounterButton()

brew(gui(App()), stylesheets=["stylesheet.css"])
```
And in `stylesheet.css`:
```css
.red-background {
  background: #ff0000;
}
```

(This only works with the current head commit, current being 25.02.2023, for anyone trying to do this).

I'm honestly not sure how a "proper" solution would be implemented. Should we have some kind of static "cssClass" field on `WidgetState` that is assumed to be there and whose value gets transferred to the internal-widget during the `build` and `update` phases after the hooks have run?