* Previous playing item, they will callback stopped/ended during our starting process, but since I set the play state to STARTING before the starting process, all stopped/ended callback will not be traced state, this is not perfect yet, need to handle paplayer stopped/ended without started condition, I will work on it.
* Application::PlayFile is called, this should introduce problem, since the original code didn't do anything for it, I was plan to handle it in standalone PR. mainly this was introduced by the dvdplayer::OpenFile's busy wait message loop, from there could init new PlayFile request, it need be handled, in the future.
* OnPlaybackStopped() is called to abort old item, this was properly handled in current PR, only trace state from starting to playing, not to stopped/ended, so it won't bother us. still also, need a way to handle paplayer stopped/ended without started condition.
* IPlayer::OpenFile return true; well, external player, not tested, let me think.
* OnPlaybackStarted() is later on called to finish the start of the new item. didn't get this.

yes, we need to put some requirements on players if they want the play state and announcements behave correctly.