Improve the way update processors are used and make it simpler

Details

Description

The current update processor chain is rather cumbersome and we should be able to use the updateprocessors without a chain.

The scope of this ticket is

A new tag <updateProcessor> becomes a toplevel tag and it will be equivalent to the <processor> tag inside <updateRequestProcessorChain> . The only difference is that it should require a name attribute. The <updateProcessorChain> tag will continue to exist and it should be possible to define <processor> inside as well . It should also be possible to reference a named URP in a chain.

processors will be added in the request with their names . Example processor=a,b,c , post-processor=x,y,z . This creates an implicit chain of the named URPs the order they are specified

There are multiple request parameters supported by update request

processor : This chain is executed executed at the leader right before the LogUpdateProcessorFactory + DistributedUpdateProcessorFactory . The replicas will not execute this.

post-processor : This chain is executed right before the RunUpdateProcessor in all replicas , including the leader

What happens to the update.chain parameter ? update.chain will be honored . The implicit chain is created by merging both the update.chain and the request params. post-processor will be inserted right before the RunUpdateProcessorFactory in the chain. and processor will be inserted right before the LogUpdateProcessorFactory,DistributedUpdateProcessorFactory