Performance: bypass __init__ in InferenceContext.clone() (#3168)

perf: bypass __init__ in InferenceContext.clone()

``clone()`` is called ~85k times per pandas/core/frame.py pylint run,
making it the hottest constructor in inference. Build the copy through
``__new__`` and write the slots directly, skipping the conditional
default handling in ``__init__`` that the caller immediately overwrites.

``tests/test_context.py`` pins the semantics the fast path has to keep:
``path`` and ``constraints`` are independent copies, ``lookupname`` is
reset, the ``nodes_inferred`` counter stays shared, ``callcontext`` and
``boundnode`` carry over, and ``__init__`` is genuinely not called.
``TestInferenceContextInit`` covers the ``nodes_inferred`` parameter on
the regular constructor, which the bypass has to stay consistent with.

Refs #1115
3 files changed