Move server part outside of main package

This way, the main package is only a (very) small wrapper around the
libraries. The real stuff happens in /apps and /server.
Make player structure more abstract and concrete

The abstraction has been moved from an exposed part of the player to an
implementation detail. This means:
* mp.MediaPlayer has become a struct, not an interface
* mp.MediaPlayer uses mp.Backend, which is an interface
* mp.Backend is implemented as mp.MPV

Other implementations of mp.Backend can easily be made.
Rename seek -> setPosition (like getPosition)
checkError -> mpv.checkError
merge 'unpause' and 'playing' events into one
Use a closed channel to signify the exit of a media player