Fix concurrency issues.

 * There was a bug where, if the onloop caller called start (unnecessarily,
   because the player is not paused when it calls onloop), then both the
   start method and the timeout function would call beginCurrentStep.  Fix
   this bug by adding a g_inCallback field that is true during both the
   onload and onloop callbacks.

 * There is a problem with IE9 where the first frame of an animation is
   apparently not drawn, and the canvas is apparently transparent.  I
   suspect the context's drawImage call is failing because the image is
   not considered loaded, but it should be loaded because all of the
   images' onload callbacks have been called.  Attempt to fix this problem
   by adding a 0ms timeout between the last image's onload callback and the
   first painting to the canvas.