Move `typename` and `<:` to Core and have inference check by value (#55289)
As mentioned in #55271, the `istopfunction` binding-based comparisons
are problematic. In #55272 and #55273, I attempted to remove the
inference special cases for `>:` and `typename` (respectively) entirely,
but for differing reasons (`>:` gets too many extra specializations,
`typename` loses precision), those PRs are suboptimal. As discussed in
#55273, this PR instead moves these functions to Core, so that both
`Core.Compiler` and `Base` share the function object, allowing inference
to detect them and apply the special handling by simple
value-comparison.
---
- closes #55273