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.
Merge branch 'fix_starting_play_state_callback_race_cond' of https://github.com/ulion/xbmc