isqrt: add integer square root builtin to all three impls
Semantics: (isqrt n) → floor(sqrt(n)). Negative argument errors.
Matches Python 3.8+ math.isqrt and R7RS exact-integer-sqrt contract.
- Python: wraps math.isqrt via lambda registration
- C: hand-rolled bit-by-bit algorithm in bi_isqrt (O(log n), no FPU)
- asm: new BI_ISQRT=109, bit-by-bit algorithm in integer registers
(%r8/%r9/%r10). Negative input → stderr + exit(1) like other
errors. GC builtin constants bumped to 110-114.
Tests:
- tests/functional.lsp: 7 shared tests (0, 1, perfect squares, floor
cases, large values). Python + C now 196 each (was 189).
- asm/test.sh: 5 asm-local tests. asm suite now 142 (was 137).
MOAD: all three implementations O(log n), no O(N²) hazards.