This patch changes the TargetParser to properly handle the generic CPU.
Currently generic is handled by having a row in the CPU lists mapping it to ARMv8.1-A since this is the only architecture without a supported CPU. There are two problems with this. Firstly, it stops us from properly targeting architectures, we would ideally like -mcpu=generic to mean target the specified architecture, rather than ARMv8.1-A. Secondly, it prevents us from having more than one architecture in the TargetParser without a supported CPU, whilst the CPU list will allow multiple 'generic' entries, the TargetParser iterates through the list finding only a first one, never a second.
To achieve this change we add a default FPU for each architecture, so that we can fall back to it when the CPU is generic. We also change the API such that an architecture is specified for fetching of defaults for extensions and FPU, for use when a generic CPU is specified.
To co-inside with the generic support improved in D14660 we also default to 'generic' instead of an empty string in the cases of no valid default CPU being found but the architecture is valid.