Adds new dr_cleancall_save_t flags which are required for proper interaction between clean calls and drreg: DR_CLEANCALL_READS_APP_CONTEXT must be set for dr_get_mcontext() to obtain the proper values, and #DR_CLEANCALL_WRITES_APP_CONTEXT must be set to ensure that dr_set_mcontext() is persistent.
Adds a clean call insertion event to enable drreg to know about clean calls at the time they are inserted. dr_insert_clean_call_ex() invokes the callback and passes the flags to drreg, who then treats the clean call as an app instruction.
For annotations, for now we leave drreg looking for the annotation label (possible future changes #5160 or #5161 would eliminate this special case).
dr_insert_{cbr,ubr,mbr,call}_instrumentation() always set both labels.
drwrap always sets both labels for pre and post callbacks.
Updates uses throughout our tests and samples to use the new flags as appropriate.
Adds a new dedicated test client.drwrap-drreg-test which tests both a drwrap call and a direct clean call.
Fixes a missing drwrap cache invalidation on module unload that the new test uncovers.
Fixes #4128 (closed)