Issue title: answerCbQuery examples explanation
 Issue body: Documentation is not clear about usage of answerCbQuery.

I have question about next example:
https://github.com/telegraf/telegraf/blob/develop/docs/examples/keyboard-bot.js

1. Why next function does not use `answerCbQuery`?
```
bot.action('Dr Pepper', (ctx, next) => {
  return ctx.reply('👍').then(() => next())
})
```

2. Why next function use two `await`. What happens without one or both `await`?
3. Why `answerCbQuery` is called before `editMessageCaption`. What happens in another order?
```
bot.action('plain', async (ctx) => {
  await ctx.answerCbQuery()
  await ctx.editMessageCaption('Caption', Markup.inlineKeyboard([
    Markup.callbackButton('Plain', 'plain'),
    Markup.callbackButton('Italic', 'italic')
  ]))
})
```
 Comments: 
 Comment 0: 1. Because this is a "pass-through" middleware. It replies with 👍 and calls next, so next middlewares can handle the same update and `answerCbQuery` if they want to.
2. What do you mean? `await` controls asynchronous requests. If you'll try to send 2 messages w/o `await`, the order of messages might be broken. But if you use `await`, the next message starts sending only after the first one is sent
3. It doesn't matter
 Comment 1: @Loskir thanks for reply.

It confused when order of messages doesn't matter in this example and `await` used.

Also I found when using webhook the order of messages might be broken w/o `ctx.webhookReply = false`
{'source': 'GithubIssues', 'repo_name_with_owner': 'telegraf/telegraf', 'issue_id': 572668684, 'repo_stars': 6443.0}