Add lazy getter for the MediaPlayer
Add the stop() function
Switch to prepareAsync and remove static calls to Extension.context
Better logging and event dispatching