Timeouts

This change adds timeouts to the `Send(Async)Message()` functions. The timeout is currently set at `StepDuration / 2`.

Implementing this required changing `SendAsyncMessage()` to return an error channel directly, instead of a `*rpc.Call`. This has the auxiliary benefit of removing the `net/rpc` dependency from messaging.go and zeronetwork.go.