If an always inline function requests a different CPU than its caller we should probably error.
If the callee CPU has features that the caller CPU doesn't we would already error for the feature mismatch, but it prints a misleading error about the first feature that mismatches.
If the callee CPU feature list a subset of the caller features we wouldn't error at all.
We also only error right now if the callee as a target attribute, but don't check anything if only the caller has a target attribute. This is consistent with our previous checking behavior, but we might want to fix that. I've left a TODO.
I've simplified some of GetCPUAndFeaturesAttributes since I needed to return the CPU string from getFunctionFeatureMap for the other callers anyway. This also saves us a second parse of the target attribute when adding attributes.