For an entry point in a WGSL program: what objects form the data interface with the outside world? - user data on input/output for vertex and fragment shaders - builtin variables - buffer and image resources Also, how do those objects combine to form an interface. This is a needed so we can write interface matching rules between vertex and fragment shaders within a pipeline. (#644) We also need it to write the rules for when a shader (buffer and image) resource interface matches a pipeline configuration. This is a blocker for meaningful support of vertex and fragment shaders.