PIPE-3211: single-source dynamic version from `pipeline._version.py`
- Configure setuptools dynamic version via attr = "pipeline._version.version"
in pyproject.toml instead of file = "version".
- Update `scripts/build_backend.py` to eliminate root version file generation,
leaving `pipeline/_version.py` as the single source of truth for both build
and runtime.
- Remove redundant /version ignore from .gitignore and package-data.
- Add docstrings to `build_backend.py` PEP 517/660 hooks and format with Ruff.