Add framework for graphics-pipeline tests in spirv_assembly.
This allows single test code to be exercised in all shader kinds (except
for compute shader).
Implement assembly boilerplate as a StringTemplate with parameters in
certain sections that can be specialized.
Extend `StringTemplate` to accept optional parameter expansions, where a
missing parameter isn't an error.
Make `SpirVAsmSource::operator<<()` work on any parameter type.
See merge request !76