MIPS uses multiple ABIs. Now LLVM supports three of them: O32, N32, and N64. The Triple::Environment has items GNU, GNUABIN32, and GNUABI64, but these items do not cover all possible cases. Ideally, we have to add something like AndroidN64, MuslN32, MuslN64 etc.
This change selects another approach. It adds MipsABI enumeration to the Triple class and treats MIPS ABI like the SubArchType. To recognize ABI it parses "environmet" component of a target triple and retrieve ABI type from it.
This change allows to keep selected MIPS ABI in one place - a target triple. In the next patches I'm going to stop using MCTargetOptions::ABIName for propagating MIPS ABI and to fix some issues which require type of selected MIPS ABI in places where MCTargetOptions::ABIName is not available at all (like MipsMCAsmInfo).