rewrite controls using one render loop

The underlying logic in controls is now changed. 

Rather than relying on timeouts and forced renderings, the controls now have their own render loop. Of course, this does not mean the play button will get redrawn 60 times per second - the controls' canvas is touched only when the controls' _state_ is changed (e.g. when the player state changed, or if the mouse moved across the play progress).

As the controls rely now on player's `S_CHANGE_STATE` event, all the `.render()` and `.forceNextRedraw()` calls became redundant and so were removed.

Also, the controls are shown/hidden _really_ smoothy now :-)

Please see the code comments for some additional coverage of the changes.