Fix MessagePort race exposed by blink scheduler

Because render thread IPCs don't currently go through the Blink Scheduler,
it's possible for the order of execution between blink tasks and IPC tasks
to change. Most of the time this is harmless, but it exposes a race
condition between the MessagePort::dispatchMessages task posted by
MessagePort::start and WebMessagePortChannelImpl::OnMessage.  Normally
the initial dispatchMessages would execute first and do nothing, but if
OnMessage gets in first then a message will delivered even if the channel
has been closed.

This patch fixes that by adding a check in dispatchMessages to see if the
channel has been closed.

BUG=432129

Review URL: https://codereview.chromium.org/720543005

git-svn-id: svn://svn.chromium.org/blink/trunk@185237 bbb929c8-8fbe-4397-9dbb-9b2b20218538