handle destroying widgets in thunks

* fix airgap for hasWidgets so that it's set on the parent of thunks if
  needed
* handle thunks when identifying widgets to be destroyed
:+1:  This is very subtle but prevents us adding a delete patch for the node and then replacing it with the thunk patch. Unfortunately we will add a delete patch for the thunk root even when we are just recursively destroying the widgets, but it's no big deal.