Fixed data race in messenger.Start() and messenger.Send()

Move the listening logic into transporter.Listen(). So that
we can make sure that messenger.Send() is called only after
the tranporter.upid is ready.

Passed go test -v -race.
Merge pull request #26 from yifan-gu/pure

Fixed data race in messenger.Start() and messenger.Send()
Verified and tested.