Why can't the send interface on the bus look like this overload?

The use case for this is on my client I want to construct something like..

```C#
var commands = new List<IBusCommand>() {new FirstCommand(), new SecondCommand()};
await Task.WhenAll(commands.Select(x => _bus.Send(x)));
```

At the moment when I do this, the generic parameter interepreted by the Send method on the IBus has been downcast to IBusCommand. This means that appropriate handlers can't be located and explosions.

Consider this PR a think piece - I haven't gone through to completion with the implementation. 

But I could do so if this is a valid direction?