Streams 170

These processors support new use cases for streams, such as 
1) generate datums in a stream based solely on elasticsearch metadata, specifically an (index,type,id) tuple (assuming a cluster is configured).  
2) branching the stream with full documents from indexes other than those specified in the ESReader, by building metadata for those documents performing a 'join'.
3) more advanced use cases, such as deleting a specific set of documents, or copying a specific set of documents between persisters if at any point they aren't present in either.

I have several examples of simple usage up in w2ogroup/streams-examples, STREAMS-170 branch, and some more advanced use cases not yet pushed because they depend on changes in STREAMS-168.
This code is duplicated between two of the new processors, and I think a variant of it already exists in the ElasticsearchPersistWriter. Any chance this can be abstracted out to a centralized location?