Added a ValueType trait to TypeInfo.
Created by: chuckatkins
This will allow for generic template functions that can deal with complex types using thier underlying value types. So rather than have to split definitions like:
template<T> T foo(const T&);
template<T> T foo(const std::complex<T>&);
to handle the case where an std::complex should use a float return value, you can now use a single signature:
template<T> TypeInfo<T>::ValueType foo(const T&);