build now takes a `Create` function instead of a direct Element

this allows us to differentiate between a Tag build called within the
scope of a `Create` (constructor / initializer of an Element) and the
scope of a `Build` (child appending logic);  needs more docs but it
works!