Changes since last MR: - Store list entry inside of `struct uia_node` instead of doing linear search for removal. - Replace `WARN` with `ERR` if provider thread shuts down with nodes still in the provider thread list. - Use `wine/rbtree.h` for looking up HUIANODEs by runtime ID. - Get rid of `struct uia_node *container_node` inside of `struct uia_provider`.