Memory leak using ORC.
in this nim code
```nim
import owlkettle

viewable App:
  counter: int

method view(app: AppState): Widget =
  result = gui:
    Window:
      title = "Counter"
      defaultSize = (200, 60)

      Box(orient = OrientX, margin = 12, spacing = 20):
        Button {.expand: false.}:
          text = "+"
          style = [ButtonSuggested]
          proc clicked() =
            app.counter += 1
        Label(text = $app.counter)
        Button {.expand: false.}:
          text = "-"
          style = [ButtonSuggested]
          proc clicked()=
              app.counter -= 1

brew(gui(App()))
```

when compiling with:
```
nim c -d:release -d:lto -d:useMalloc main.nim
```

valgrind reports leaks
```
==49509== Memcheck, a memory error detector
==49509== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==49509== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==49509== Command: ./main
==49509== 
==49509== Warning: noted but unhandled ioctl 0x644f with no size/direction hints.
==49509==    This could cause spurious value errors to appear.
==49509==    See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==49509== Warning: noted but unhandled ioctl 0x6444 with no size/direction hints.
==49509==    This could cause spurious value errors to appear.
==49509==    See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==49509== Invalid read of size 1
==49509==    at 0x4CF106C: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.9)
==49509==    by 0x4CF820B: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.9)
==49509==    by 0x4CF824C: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.9)
==49509==    by 0x4CE6E74: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.9)
==49509==    by 0x4CCD799: gsk_renderer_render (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.9)
==49509==    by 0x4B714C1: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.9)
==49509==    by 0x4B71E28: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.9)
==49509==    by 0x4C4BB77: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.9)
==49509==    by 0x52716FF: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.4)
==49509==    by 0x5271862: g_signal_emit (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.4)
==49509==    by 0x4C77202: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.9)
==49509==    by 0x52716FF: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.4)
==49509==  Address 0x6596690 is 32 bytes before a block of size 4,096 in arena "client"
==49509== 
==49509== 
==49509== HEAP SUMMARY:
==49509==     in use at exit: 4,703,508 bytes in 20,876 blocks
==49509==   total heap usage: 296,643 allocs, 275,767 frees, 69,116,495 bytes allocated
==49509== 
==49509== LEAK SUMMARY:
==49509==    definitely lost: 3,240 bytes in 33 blocks
==49509==    indirectly lost: 19,232 bytes in 405 blocks
==49509==      possibly lost: 12,644 bytes in 85 blocks
==49509==    still reachable: 4,589,016 bytes in 19,650 blocks
==49509==         suppressed: 0 bytes in 0 blocks
==49509== Rerun with --leak-check=full to see details of leaked memory
==49509== 
==49509== For lists of detected and suppressed errors, rerun with: -s
==49509== ERROR SUMMARY: 16 errors from 1 contexts (suppressed: 0 from 0)
```