This commit adds a normal attribute on the face domain. Since this
data is purely based off of the location of each face's vertices, it is
exposed as a read-only attribute. After rB80f7f1070f17, this attribute
can be interpolated to the other domains we currently use.
Since this attribute is a special case compared to the others, the
implementation subclasses BuiltinAttributeProvider. It's possible
there is a better way to abstract this, I'm not quite sure. Something
else might also become apparent if we add similar read-only attributes.
See D10676: Geometry Nodes: Revert current normal attribute implementation for why this is preferred over the previous implementation.