sys/stat.h:  Separate S_ISFIFO() and S_ISSOCK()

Somehow, they were programmed to return true for both pipes and sockets,
with the added defect of using the macro argument more than once.
sys/stat.h:   Wrap macro arguments in parentheses

Protect against e.g. S_ISSOCK( x @ y ), where @ is any operator of lower
precedence than '&'.
[FIX] Genie:  Pass sig num in leave_system_call()

We were passing zero before.  This fixes a failing test.