External subtitles

This implements support for external srt subtitle files.

Additionally, switching of subtitle streams during playback is now responsive, subtitle delay is adjustable using "d" and "f", and all file paths are confirmed to exist before trying to open them.

The added files are all rather trivial, except for utils/variant.hpp, utils/variant-impl.hpp and utils/traits.hpp. They are Boost-licensed and come from from https://github.com/kennytm/utils. It's a rewrite of boost::variant with proper C++11 move semantics.