Add experimental support for channels.

This adds experimental::channel and experimental::concurrent_channel.
Channels may be used to send completions as messages. For example:

	channel<void(error_code, size_t)> ch(ctx);

  ch.async_send(asio::error::eof, 123,
      [](error_code ec)
      {
        // ...
      });

  ch.async_receive(
      [](error_code ec, size_t n)
      {
        // ...
      });
20 files changed
tree: 18e0e6c43c3f081287d8a693cdbc657de56bd7f4
  1. .github/
  2. asio/
  3. .appveyor.yml
  4. .cirrus.yml
  5. .gitignore