As RISC-V spec supports multiple extension version, refactor the SubtargetFeatures and RISCVISAInfo to support it.
RISCVISAInfo can parse arch string like -march with extension version, but related SubtargetFeatures don't contain version info in llvm side. For example, when enable 'm' extension with passing -mattr=+m, only a boolean flag to indicate that 'm' extension is enable. After this patch, '+m' would be default -mattr to represent default extension version. You can add new extension version by adding new SubtargetFeature like +m2p1.
It also handles arch string with version number of attribute section in obj file, including assemble and dis-assemble process.
I'm thinking do we also need to have -target-feature +m2p0 here since we are going to support multiple extension version?