New Feature 🔥
**Is your feature request related to a problem? Please describe.** 🤔
I've noticed that some of my code operating on the children of a TagRef' is now broken. Basically this seems to be because the children now appear as `seq[Node]` instead of `seq[TagRef]` when passed around as data.

**Describe the solution you'd like** 💡
Since making a TagRef through buildHtml only to take out a seq of children TagRefs is a bit convoluted, I thought it might would be a good time to implement some templates for creating seqs of to-be-rendered DSL data. I'd use something like this myself in my own development system if it wasn't integrated into happyx. _Note that currently the `TagRef `based approach of `buildHtmls `fails and only the thunk based approach works in a straightforward way._

```

template thunkHtml(body: untyped): proc(): TagRef =
  proc(): TagRef = buildHtml:
    body

template thunkHtmls(body: untyped): seq[proc(): TagRef] =
  block:
    var res: seq[proc(): TagRef]
    template html(b: untyped) =
      res.add:
        proc(): TagRef = buildHtml:
          b
    body
    res

template buildHtmls(body: untyped): seq[TagRef] =
  block:
    var res: seq[TagRef]
    template html(b: untyped) =
      res.add:
        buildHtml:
          b
    body
    res

let htmlProcs = thunkHtmls:
  html:
    tSpan: "front"
  html:
    tSpan: "back"

let htmlTags = buildHtmls:
  html:
    tSpan: "right"
  html:
    tSpan: "left"

component FormatProcHtml:
  p: (proc (): TagRef) # parentheses needed in avoid "nested statements" error
  html:
    em(style="color:blue"): {self.p()}

component FormatTagHtml:
  t: TagRef
  html:
    em(style="color:blue"):
      {self.t.val}

appRoutes("ROOT"):
  "/":
    for i in 1..5:
      tDiv:{$htmlProcs[0]()}
      FormatProcHtml(htmlProcs[1])
    for i in 1..5:
      tDiv:{$htmlTags[0]}
      FormatTagHtml(htmlTags[1])

```

![image](https://github.com/HapticX/happyx/assets/126020181/4cfb7c66-f2b4-42f1-82b0-ef6cdfa51a9b)
