The problem is that this string cast ability is expected by current code. So everywhere where a string|TemplateReferenceInterface is a valid parameter it uses code like `(string) $name`. So there are 2 solutions:
1. add the __toString to the interface, so it's actually ensured it works
2. leave __toString out, which requires several code changes and makes things much more verbose:
`$name instanceof TemplateReferenceInterface ? $name->getLogicalName() : $name`.

I'd prefer 1) because that's how the current code works. What do you prefer?