This patch adds proper handling of -target-abi, as accepted by llvm-mc and llc. Lowering (codegen) for the hard-float ABIs will follow in a subsequent patch. However, this patch does add MC layer support for the hard float ABIs (emission of the appropriate ELF flags https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md#-file-header).
ABI parsing must be shared between codegen and the MC layer, so we add computeTargetABI to RISCVUtils. Without a much wider scale change I don't see a better approach than report_fatal_error for bailing out when an unsupported ABI is encountered. However, I make use of Expected<T> and createStringError so this could potentially be improved in the future without changing computeTargetABI.