Three fixes:
1) Don't emit a warning when GEARMAN_TIMEOUT is returned by
GearmanClient::wait() because it is normal to experience the timeout
2) For the GearmanClient callback, increment refcount for the task object
before sending it to the callback. This prevents a segfault in case the
calling code unsets the task object.
3) GearmanTask::data() is only valid when UNBUFFERED_RESULT is set as
an option. GearmanTask::recvData() is the exact opposite. Added error
checking around this to prevent segfaults when they are mismatched.