Fix SVD for MSVC+CUDA.
CUDA gets confused about the definition of Index, and can't match the
out-of-line definitions of a few functions with their declarations.
If we just import the SVDBase::Index definition, then gcc/clang get confused
about the out-of-line definition. To fix all, we import
SVDBase::Index, and modify all definitions to use the internal Index
type.
Also addressed annoying warnings about not returning anything at the end of a non-void function.
Edited by Antonio Sánchez