Introduce batch message container framework and support key based batching container (#4435)

### Motivation

Introduce batch message container framework to support multiple ways to do message batch. 
Currently, pulsar support a most basic batch message container, use the batch message container framework can quickly implement other types batch message container, even users can customize their own batch message container.

Add a new batch message container named BatchMessageKeyBasedContainer to support batching message in key_shared subscription mode.
1 file changed