updater implementation

+ slight writer refactor for inheritance
bonus deleter implementation
i see what you are getting at, but consider:
a) they aren't exactly the same. the relevant field(s) for flush threshold tracking differ between types
b) there common parent class of IndexRequest, UpdateRequest, and DeleteRequest is ShardReplicationOperationRequest which is templated on the type we are using.  IMO the code will get less rather than more comprehensible if we do this.