Async version of exchange declare and bind

Hi, Mike!

I found that PublishAsync method do some blocking operations: exchange declaration and bind.

Here is an attempt to kill Wait() from PublishAsync.

Also was added Then method described here(http://blogs.msdn.com/b/pfxteam/archive/2010/11/21/10094564.aspx) to reduce boilerplate.