This adds support for printing improved missing feature error messages
from the assembler, which now indicates which feature caused the parse
This looks good to me, the only thing that I'm not sure about is the phrasing of the warnings:
"error: instruction requires the following: RV32I Base Instruction Set"
For a naive user (like me) I think the 'I' could make them focus on the extension as the problem, not the fact that's it's RV32 vs RV64.
I've used the names of the extensions as per the spec (and the SubtargetFeature) in order to map it back more easily to the spec, a user can search for one of these strings in the spec and find out what it is they are missing.
Thanks Simon, LGTM. I did wonder about just saying e.g. "the 'c' instruction set extension", but on balance I can't see it being any easier to understand or more obvious what to change, and it's handy giving a longer description.