Improve array data access macros; use them more consistently. Specifically, we now (a) have DD_* macros which do what AD_* macros do, except they take a data pointer instead of an ARRAY *, and (b) have ADC_* macros which cast to a const-poisoned pointer. We use them fairly consistently now.