Adapt rebootstrap to setuptools >= 52.0.0 without easy_install
Setuptools removed support for setuptools.easy_install in version 52.0.0.
This MR completely changes the slapos.rebootstrap implementation to no longer depend on setuptools.easy_install. It also manages to greatly reduce dependency on private internal APIs of zc.buildout.
The new implementation merely launches buildout bootstrap
with the new Python version (e.g. 3.7) by reusing the package locations of the zc.buildout & dependencies installed for the initial Python version (e.g. 3.11), which results in zc.buildout & dependencies being installed for the new Python version. This works because the versions are carefully selected to be compatible with both Python versions (this is a longstanding constraint of slapos.rebootstrap already).
This requires some adjustments from zc.builout, so it depends on slapos.buildout!30 (merged). It also depends on slapos.buildout!31 (merged) for testing.
This issue was initially missed because in SR tests the Python version changes are always towards Python 2.7, which implies setuptools is pinned to an old version.