Allow botcmd's to use yield

These commits make it possible for bot commands to use yield to iteratively return output to the user, which is useful for long-running commands.

This was already possible with a workaround by just sending to the person directly, but that bypasses DIVERT_TO_PRIVATE and is not nearly as easy to type as typing `yield "something"`.

Some functionality was split off from `callback_message` and into it's own function `_execute_and_send`, as the former was getting too complex already and would be even worse with these changes.

Unit tests have been added which test the new `_execute_and_send` as well.

Once this is merged I will update the documentation at https://github.com/gbin/err/wiki/plugin-dev#wiki-async as well.