Fix WaitingCallback to not run JavaScript during GC

We were occasionally hitting an ASSERT in sky,
abarth and I finally tracked it down this afternoon
to WaitingCallback and HandleWrapper causing JS
execution during GC.  This fixes WaitingCallback
to immediately clear its wait handle on destruction
but wait to notify JS clients until outside of GC.

Pure-js based mojo was undoubtedly hitting this as
well, it just didn't have the same ASSERTs from
blink to catch this.

R=abarth@chromium.org, hansmuller@chromium.org
BUG=434109

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