This makes it easier/cleaner to generate a single signature from
this directive. Also:
- Adds the symbol name, such that we don't depend on the location of this directive anymore.
- Actually constructs the signature in the assembler, and make the assembler own it.
- Refactor the use of MVT vs ValType in the streamer and assembler to require less conversions overall.
- Changed 700 or so tests to use it.