Revert 179668 "WorkerThread's pointer should be protected until ..."

This CL broke two webgl conformance tests.  Here is one build:
http://build.chromium.org/p/chromium.webkit/builders/GPU%20Mac10.7/builds/30751

Here is the stack:

ASSERTION FAILED: m_verifier.isSafeToUse()
../../third_party/WebKit/Source/wtf/RefCounted.h(107) : bool
WTF::RefCountedBase::derefBase()
1   0x290368b blink::WorkerThread::cleanup()
2   0x2904411 WTF::BoundFunctionImpl<WTF::FunctionWrapper<void
(blink::WorkerThread::*)()>, void (blink::WorkerThread*)>::operator()()
3   0x22c7b3e blink::Task::run()
4   0x47bb641 base::internal::Invoker<1,
base::internal::BindState<base::internal::RunnableAdapter<void
(blink::WebThread::Task::*)()>, void (blink::WebThread::Task*), void
(base::internal::OwnedWrapper<blink::WebThread::Task>)>, void
()(blink::WebThread::Task*)>::Run(base::internal::BindStateBase*)
5   0x997f0b base::MessageLoop::RunTask(base::PendingTask const&)
6   0x998487 base::MessageLoop::DoWork()
7   0x93e642 base::MessagePumpCFRunLoopBase::RunWorkSource(void*)
8   0x93e2404f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
9   0x93e23a79 __CFRunLoopDoSources0
10  0x93e49826 __CFRunLoopRun
11  0x93e4901a CFRunLoopRunSpecific
12  0x93e48e8b CFRunLoopRunInMode
13  0x93eecd base::MessagePumpCFRunLoop::DoRun(base::MessagePump::Delegate*)
14  0x93eacc base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*)
15  0x997b33 base::MessageLoop::RunHandler()
16  0x9b4c44 base::RunLoop::Run()
17  0x9972ea base::MessageLoop::Run()
18  0x9d3f11 base::Thread::Run(base::MessageLoop*)
19  0x9d40c9 base::Thread::ThreadMain()
20  0x9ce497 base::(anonymous namespace)::ThreadFunc(void*)
21  0x932725b7 _pthread_start
22  0x9325cdce thread_start

> WorkerThread's pointer should be protected until all the shutdown tasks are complete
> 
> During destruction of WorkerThread, m_pendingGCRunner is destroyed prior to m_thread,
> because it is following it in the members ordering in the class.
> So when m_thread is being destroyed, it is waiting for all the tasks on the message loop
> to complete, some of which need the PendingGCRunner. This will cause use-after-free.
> 
> To prevent the situation, this CL adds code to keep the WorkerThread pointer alive
> until we complete all the shutdown tasks.
> 
> BUG=400511
> TEST=none (I cannot reproduce the crash)
> R=ager@chromium.org, jochen@chromium.org, nasko@chromium.org, zerny@chromium.org
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=179604
> 
> Review URL: https://codereview.chromium.org/445863002

TBR=haraken@chromium.org

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

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