Experimental/mapbox variant

First cut of replacing boost::variant w/ mapbox::util::variant from https://github.com/mapbox/variant. Put this in an experimental branch to make sure it compiles on Windows via AppVeyor. Becomes mergeable once the upstream variant implementation is tagged for release.

cc: @artemp