MessageEvaluationContext is used to cache selection results.
A message usually has multiple selectors applied against it. Some selector
have a high cost of evaluating against the message. Those selectors may whish
to cache evaluation results associated with the message in the
MessageEvaluationContext.