writer: support "async" publishing

For flexibility, `Writer` should provide `PublishAsync` and `MultiPublishAsync` methods that take response channels and allow a client to more intelligently batch work without having to resort to goroutines.

cc @jehiah