Break out proto step reference fields
Step references are an opaque string in both the schema and proto models. There is a lot of information packed into a single field: protocol, url, version and path, which requires implicit parsing rules in the core.
This change moves reference parsing into the compile step. So the user-facing schema still has a nice string reference. But the core can operate on an explicit struct of fields. This also makes it easier to target the core proto with another compiler.