change StreamExecute API to differentiate send errors.

The ErrFunc cannot be reliably used to check for rpc
send errors because the sender goroutine can race against
the call to set the error to a streaming error.
So, we're changing the function to return an explicit
error to indicate if the rpc has failed.
There is a deeper problem with rpcplus where it doesn't
have the same behavior. The rpcplus API returns a channel
immediately, and sets the error variable later if the send
failed. We need to change this behavior in the go client API
before we can benefit from this.
StreamExecute waits for first packet before returning error

StreamGo doesn't immediately return an error if a send fails.
So, there's no direct way of finding this out without trying to
fetch the first value from the channel.
Merge branch 'suguwork'