Add interface for SchematicValueVisitor

This is, as far as I can see, the easiest way to un-break the frontend. This will be done by implementing the interface `SchematicValueVisitor` in the frontend and adding in support for "frontend values", i.e. values like "FunctionValue" that exist in the frontend and not in the schematic.

This re-implements functionality that was already in the frontend (and also doesn't really do anything, because it's just infrastructure for a visitor that's going to be brought in from more existing code).