Change  Singular() / _SI_EVALUATE to return true/false

Now true (instead of 0) indicates success, false (instead of 1) an
error.

Also corrected the source code comment of _SI_EVALUATE.
Fix memory leak in _SI_EVALUATE