Merge and code review updates for mplayer launcher

@jamalex - did this merge and some updates based on code review.  

The biggest thing I changed (I believe) is to move a try...catch block from the callback in main/api_views.py into the utils/mplayer_launcher code, as I believe the code running mplayer should be robust to (unexpected) exceptions by the callback, rather than callbacks trying to ensure that they don't raise exceptions. 

That logic would need to be duplicated in your new code.

Let me know if you have questions or concerns.  I tried to annotate changes in the pull request.  Would be happy to talk you through it too, for efficiency's sake, if that helps.