Factor out TagMessenger and EtagGenerator

The TagMessenger acts as a middle man that performs both etag changes and the sending of change messages.  That functionality is overloaded and should be separate.  

See: https://sagebionetworks.jira.com/browse/PLFM-2364 and https://sagebionetworks.jira.com/browse/PLFM-2366