This adds a `Component` helper type and a `ForEach` helper method.
The first attempt used an interface but interfaces imply allocation. We really
can't afford to allocate here.
This is a huge performance hit. Really, we just need to tell users not to modify
the result.
Also, get rid of an unnecessary pointer indirection (no api change).