refine IR model queries (#58661)
- `jl_isa_ast_node` was missing `enter`/`leave` nodes.
- `Core.IR` exports mistakenly included a function `memoryref`.
- `Base.IR`, and `quoted` were not public or documented.
- Add julia function `isa_ast_node` to improve accuracy of `quoted`.
- Change `==` on AST nodes to check egal equality of any constants in
the IR / AST, and make hashing consistent with that change. This
helpfully allows determining that `x + 1` and `x + 1.0` are not
equivalent, exchangeable operations. If you need to compare any two
objects for semantic equality, you may need to first wrap them with `x =
Base.isa_ast_node(x) ? x : QuoteNode(x)` to resolve the ambiguity of
whether the comparison is of the semantics or value.
- Handle `undef` fields in Phi/PhiC node equality and hashing