Revert 177833 "WebGL: Refactor active context management."

New assertion is triggered in debug builds running conformance/context
WebGL conformance tests. See Issue 392274.

> WebGL: Refactor active context management.
> 
> This CL makes WebGL lost&retore code more succinct.
> 
> 1. Deactive a context in loseContextImpl(), instead of dispatchContextLostEvent().
> Because of
> a) Prevent inconsistent state. Currently, activeContext() vector can store a lost
> context due to this, so oldestContextIndex() needs to check if active context is
> lost. Now we don't need redundant lostContext check. In addition, it does not
> make sense that active context list can store a lost context.
> b) In the same sense, only maybeRestoreContext() actives a context like loseContextImpl()
> in this CL.
> 
> 2. Don't call activeContexts().remove() adhoc.
> Only deactiveContext() calls activeContexts().remove() like only activeContext()
> calls activeContexts().append().
> 
> 3. Change the logic of dispatchContextLostEvent().
> Currently, when m_contextLostMode != RealLostContext, a context is added to
> forcibly evicted list, in which the context will be restored when another
> context is destructed. However, we start the restore-timer when
> the context is lost due to AutoRecoverSyntheticLostContext also. It means
> AutoRecoverSyntheticLostContext can restore twice. So this CL changes a context
> to be added into forcibly evicted list only if SyntheticLostContext.
> 
> BUG=392274
> 
> Review URL: https://codereview.chromium.org/251373005

TBR=dongseong.hwang@intel.com

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

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