Use specialized class instead of function overload for Variant::Get
Nvcc was having troubles resolving the return type of the overloaded function to get a value out of a `VariantUnion`. Replace the implementation with a class with specializations. This is more verbose, but easier on the compiler.
Showing with 144 additions and 52 deletions