Mojo: Fix MessagePipe teardown when it has enqueued messages.

In particular, when an enqueued message has a "handle"/Dispatcher --
that Dispatcher needs to be Close()d. This is a little touchy, since
we'll be acquiring a Dispatcher lock under another
MessagePipeDispatcher's lock. But this case is okay since we should have
the only references to Dispatchers in our message queue (and so those
locks should never be acquired).

TODO: Instead, maybe add a "frozen" state to Dispatchers, and have
CreateEquivalentDispatcherAndCloseNoLock() create Dispatchers in that
state, with the Dispatchers being "thawed" when read from a message.
(Then Dispatcher destructors could auto-close if still "frozen".)

R=darin@chromium.org, darin

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@237350 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 237350