Add ircv3.2 batch and batch channel and query buffer playback.

This adds a vendor-specific [batch](http://ircv3.atheme.org/extensions/batch-3.2) support for client -> znc connections.  Also if the capability is enabled by a client, then channel and query buffer playbacks will be batched.

The batch `type` for this is `znc.in/playback`.  This is vendor-specific and follows the requirements defined [here](http://ircv3.atheme.org/specification/capability-negotiation-3.1)
The `reference-tag` is an MD5 of the channel or query name.
Additionally one parameter is provided, this is the name of the channel or query which is being batched.

At present I know of no clients which support batch, however @TingPing has indicated he is likely to add support to HexChat should this pull request be accepted.
2 considerations...
1. Every time a tag is added, the whole message needs to be parsed and constructed again :( Tags should somehow be passed in map near the message, to be applied in the end. For now it's fine though.
2. It's better to declare msBatchTags var right here, and initialize it directly. That way compiler may optimize the return value. Anyway, you don't reuse the same map for every message