Analog pin handling generalizations

Here's a change to the handling of analog pins in `analogRead`. It removes some hardcoded, MCU-based processing, that can just be generalized using the value of `A0` instead. This makes it easier for third party to get working analog pins, without changing anything for the existing boards and variants.

I originally wanted to combine this fix with a fix for #1883, but it seems that issue might be more complicated than I initially thought, so let's do this one first.