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.