Scan only allows vector type

Scan< Devices::Cuda, Type >::perform only allows vector types but not array.

The main issue seems to be mismatch of type alias, in scan using RealType = typename Vector::RealType; is declared.

vector uses the alias using RealType = Real; but array uses the alias using ValueType = Value;

For usage, both mean the same thing but are named differently. Refactoring of internal type alias should solve the problem.