Re: (4) Note that the analogRead() anomaly is dependent on the source impedance of the analog voltage. The "interference" (crosstalk) and "delay" (settling time) issues are diminished or eliminated by a lower impedance. Hard-wiring factors based on the assumption of marginal circuit design doesn't seem like a desirable thing to me. Like many design decisions, it is an interaction of several factors, hardware and software.
1. Additional member functions print_P and println_P in the Print class, for printing PROGMEM strings
The fix is to move the strings into PROGMEM, however they can't then be printed directly using e.g. Serial.print(). I suggest new member functions print_p(const PROGMEM char*) and println_p(const PROGMEM char*) in the Print class, similar to the corresponding print and println members but taking PROGMEM strings.
4. Configurable delay in analogRead() after switching the multiplexerAnother problem that I often see on the forums is users finding that analog pins 'interfere' with each other. The usual suggestion is to read from the pin twice, possibly with a delay between the two reads. However, it would be better to include a configurable delay in analogRead() itself, for two reasons: