ADC interrupt refinement

Added method to initialize and ADC1 or ADC2 interrupt easily.  The
low-level code also calls the function address from high-level code that
is assigned during the interrupt initialization.  This makes it easier
to write portable code at the high level.