Refactoring JS/Flash communication layer

To make the communication layer more extensible, I've created a class called JSEventDispatcher.
Mainly, this class was created to avoid hard-coded JS function calls inside flash domain - for example, the events which were thrown to JS: `ExternalInterface.call("onPlay"); ExternalInterface.call("onEnd");` etc.
Also, you may listen when flash is fully loaded (scritps running, added to stage, etc), through the new callback (FlashVar 'loaded').