Proper use widgets inside control blocks!

Getting widgets to be assigned properly was hard. Take a template like in
recursive.oak.html:

    <template name='list'>
      <ul>
        {loop children}
          {if type is header}
            <use mx='list.header'></use>
          {/}
          {if type is item}
            <use mx='list.item'></use>
          {/}
          <p>Some postfix HTML.</p>
        {/}
      </ul>
    </template>

We can't just use queryselectors at compile time to figure out where the
element lives. The solution was ultimately a runtime answer, that kept track
of which widgets we created, and what their queryselectors were.

In the future, we could optimize the code generated for the simple cases where
we know at compile time that there's no reason to track queryselectors.