Use Singular interpreter objects in Func_SI_CallFuncM

This avoids creating tons of copies of objects, and in particular
some pathological cases that could lead to memory usage
exploding through the roof.

Note that this change is incomplete: Func_SI_CallFunc2/3
should also do this, and also Func_SI_CallFuncM for more
than 3 parameters.

Moreover, it might be a good idea to make the handling
of return values a bit more clever: If the return value
is an IHDL, instead of copying it, we could check
if it refers to one of the input objects, and if so,
reuse the GAP object for that.
src: add two comments
Remove support for Singular < 4.0.0
Update build instructions

They now reflect that Singular 4.0.0 is out, and the scripts are now
slightly more flexible. In particular, one can now pass extra arguments
to configuresingular which are passed on to Singular's configure. This
allows specifying an alternate GMP, or modifying the CXXFLAGS etc.
doc: switch to using autodoc
configure.ac now honors VERSION file
Protected #define NUM_RAT

Just in case GAP ever moves it to rational.h, where it belongs
Get rid of some compatibility macros

These were used to make our code compatible with both 3.x and 4.x,
but since 3.x support was removed, we don’t need them anymore.
move some duplicate code into new func ClearLastOutputBuf
Workaround bug (?) in Singular
Fix second SingularIdHdl constructor

Need to set h to 0, otherwise the assert() inside set() might trigger.