dzn: Support 16-bit types
This series enables 16-bit types only when they're natively supported by the backend. It supports lowering 16bit loads/stores to either 32bit or passing it through to the DXIL backend. Currently only the spirv2dxil path is using native 16bit accesses, but CL can probably start using it too.
Doing this also found that WARP didn't have proper rounding behavior for fp16, so that was fun. A fix for that will show up in NuGet eventually.
This is on the path to getting DOOM Eternal up and running. We'll see what comes next.