Now that we have visitInfo.id, we need to ensure it matches the exposure/visit identifier used by the butler. Jim Bosch suggested this could be done early on in CharacterizeImageTask, and may necessitate replacing the ExposureIdInfo object entirely. CharacterizeImageTask.runQuantum would have to pass in the value of dataId['visit'] to run.
Because we named the VisitInfo object simply id, we can put either the exposure or visit butler id in there, depending on whether we are working on a snap or visit. Since we have no snap handling code right now, we can just use visit currently.
Once this is done, we can clean up other Tasks that override runQuantum to get the visit id (many of these in the AP pipelines), and have them just use visitInfo.id