Backends are currently fixed to f32 due to the need to inject literals
Backends should have control over the final type
ex. naga backend should be able to downcast f64 to f32,
enable the FLOAT64 capability and upcast everything to f64,
or enable the FLOAT64 capability but otherwise leave types as-is
to allow mix-matching in cases where it makes sense(??)
Need to be able to guarantee output type rather than relying on literals,
while still allowing arbitrary storage for the sake of nice API
May be wiser to simply store as highest-common-denominator types
Specifying format per-property in SpecializationData is probably the way to go
Switch back from identifiers to properties to preserve type information
Augment with a new numeric type enum so backends can cast appropriately