First off, in a battery powered application I try to aviod using voltage regulators or anything that requires them- though sometimes it's unavoidable.
If you can run at least one microcontroller unregulated, then you can use one analog input to measure an LED. The higher the reading the lower the voltage- whether you use an arithmetic subroutine or a lookup table is not critical.
Tracking the battery voltage during discharge will give some indication of the chemistry- e.g. anything over 5V76 is a primary. Beyond that all nickel batteries will look similar, only the duration of the charge will tell you whether it had cadmium or hydrogen. You could also implement a test discharge to determine the internal impedance, but that would not guarantee accurate results.
Yes I'm sure I've seen a charger controller that could recognize an alkaline primary, but I don't think I've seen one that can manage NiMH and NaCd as well