Note that we could just as easily store the `filepath string` and the `data interface {}` for each block in this struct, and defer rendering until later. I don't know if this helps us or not, but I see now that there is no real complexity cost to this since we just pass in the `data interface{}` as-is without worrying about marshaling types.

Storing the rendered text (instead of the filename/data pair) has the advantage that we don't need to use a template if we don't want to. This is done for example with `block.Title` later on.