dynamic support?

What if one could do this?
```csharp
public async Task<object> Invoke(dynamic input)
{
    int anInteger = input.anInteger;
    double aNumber = input.aNumber;
    string aString = input.aString;
    bool aBoolean = input.aBoolean;
    byte[] aBuffer = input.aBuffer;
    object[] anArray = input.anArray;
    dynamic anObject = input.anObject;

    return null;
}
```

Or this:
```csharp
public async Task<object> Invoke(dynamic input)
{
    var twoNumbers = new { a = 2, b = 3 };
    int addResult = await input.add(twoNumbers);
    return addResult * 2;
}
```

I have no idea if `dynamic` and `await` will even play nicely together, particularly in the second example, but this seems like an ideal place to let the DLR go to town.

Is anyone working on this? Has it been tried?