Refactor the media player framework so we can plugin other playback engines

This is the first step to #92