networking fixes to State

There were a few issues preventing server.go from functioning properly. Namely, the bootstrap ID had to be changed to 1 (since 0 is reserved by the `MessageRouter`) and calls to `SendMessage()` had to be made asynchronous. To this end, `SendAsyncMessage()` was added to the `MessageRouter` interface.

I'm not sure what the best design for `SendMessage()` and `SendAsyncMessage()` are. It seems like in most cases where `SendAsyncMessage()` is being called, the caller does not care about the result. Calling `SendMessage()` in a goroutine can also often be used in place of `SendAsyncMessage()`. It may become easier to make a decision here later on.

The `GobEncode()` and `GobDecode()` functions were also updated to include the `index` field which was recently added to the `Participant` struct.

State is still not functioning perfectly; it needs some logic fixes. David will address these soon.