Overhaul SingularIdHdl

It is now both simpler and also more efficient
Add new source file src/singobj.cc
Change Func_SI_CallFunc3 to use SingularIdHdl
Add internal helpers StartPrintCapture / EndPrintCapture
Add Func_SI_CallFunc0, and simplify Func_SI_CallFuncM