Use unique_ptr in AlsaPlayer
Use std::thread rather than pthreads for AlsaPlayer
Reuse a decoding buffer for ALSA rather than constantly allocating new ones
Improve ALSA playback position reporting

Use std::chrono since it's a nicer API. Use a separate lock for playback
position so that the GUI thread isn't blocked for hundreds of ms while
snd_pcm_drain is waiting, and update the playback position after
decoding audio rather than before to avoid it being significantly wrong
when not using a cache.
Fix restoring video position from saved project info
Add a missing check for if the video has an audio track