Be more explicit in how we return on failure for recvmsg

Apparently doing an unconditional XSRETURN_EMPTY results in returning
a list of size 0, which in turn becomes 1 in scalar context. This change
makes explicit return calls depending on context, and now in scalar
context it returns with XSRETURN_UNDEF

This is the root cause of #28, although we should have checked for
return values more vigorously as was done in b2ea2912a06cd21ba3acc12cdbb5ffbf0701eff0