Added template function select_if() in variant.h; Unit-tested.

do you get a compilation error if you leave the <> out? I don't quite understand why we need them.