The “circuit-builder’s” view of an expression. In particular, it represents
a template of polynomial relationships between an output computational
graph node and outputs from source computational graph nodes.
This macro generates a layer enum that represents all the possible layers
Every layer variant of the enum needs to implement Layer, and the enum will also implement Layer and pass methods to it’s variants