Dynamic Allocation: Improve missing/unknown allocation id handling
 * MeasureInfo.GetCanonicalDataProviderName: Log and return null for invalid ids instead of throwing
   - This appears to have already been the behavior expected by the caller
 * DeliveryMetrics.CalculateNodeMetrics: Handle missing ids more quietly than unknown ids
   - Records with missing ids are still logged as warnings but will not generate alerts
 * Add XML escaping to MailAlertLogger
   - Previous fix included warning alerts for all failed activities but did not escape the activity XML