Fix race conditions after starting flag reset,
make sure play state callbacks are called and only called once.
[Fix] Use shared pointer for the player in CApplication, fix double PlayFile call crash.
Change return value of PlayFile/PlayStack to support cancel detection.
Detect PlayFile cancel better, any pPlayer->CloseFile() will cancel playback.