add timeout to SendMessage
add timeout to SendAsyncMessage
add timeout tests
fix data race

This necessitated changing the return value of SendAsyncMessage.
It now returns an error channel. Senders can wait on this channel,
which will produce a value when the request has completed.

This has the pleasant side effect of removing the need to import
net/rpc in messaging.go and zeronetwork.go.
change rpc.Call to chan error
update rpc tests
Merge pull request #116 from lukechampine/rpc

Timeouts