Currently TypedValue can be constructed directly from Value, hiding
errors that could be caught at compile time. For example the following
will compile, but crash/assert at runtime:
void foo(TypedValue<IntegerType>); void bar(TypedValue<FloatType> v) { foo(v); }
This change removes the constructors and replaces them with explicit
llvm casts.
Depends on D142852