slang: stub unknown system tasks so procedures aren't Invalid
With slang (12.x) used as a library, a call to a simulator-specific system task it doesn't know (e.g. vendor $dump* tasks) makes the whole statement, and so the enclosing initial/always block, an Invalid node. Fix: before elaborating, walk the syntax trees for SystemIdentifier tokens, and for each name compilation.getSystemSubroutine() doesn't know, register a SystemSubroutine subclass (Function, int return, allowEmptyArgument true, bind NameSyntax args via ArbitrarySymbolExpression::fromSyntax, eval -> notConst). Separately, $value$plusargs-style output args are bound as an AssignmentExpression whose rhs is EmptyArgument, so an ASTVisitor with VisitFlags::Statements|Expressions that handles AssignmentExpression and pre/post inc/dec catches those writes too.