ADC Rewrite

My initial implementation of ADC was incorrect.
Wrapping occurs correctly now for both BDC and non-BDC modes.
Overflow now occurs correctly