func NewAnnotatingSender(s Sender, annotations map[string]interface{}) Sender {
	return &annotatingSender{
		Sender:      s,
		annotations: annotations,
	}
}
NewAnnotatingSender adds the annotations defined in the annotations
map to every argument.

Calling code should assume that the sender owns the annotations map
and it should not attempt to modify that data after calling the
sender constructor. Furthermore, since it owns the sender, callin Close on
this sender will close the underlying sender.

While you can wrap an existing sender with the annotator, changes
to the annotating sender (e.g. level, formater, error handler) will
propagate to the embedded sender.
package send
import (
	"errors"
	"strings"
	"github.com/mongodb/grip/message"
)
type annotatingSender struct {
	Sender
	annotations map[string]interface{}
}