Make apply_visitor work with rvalues.

This patch adds support for rvalues in apply_visitor. For example, consider a visitor that computes a value from a temporary:

    auto x = apply_visitor(Visitor{}, Variant<int, double>{42});

Because apply_visitor took an lvalue, the above statement would not compile.