IAsyncConstraint
Interface for constraints which support asynchrnious ApplyAsync.
Applies the constraint to a delegate that returns the task.
The default implementation simply evaluates the delegate and awaits the task
but derived classes may override it to provide for delayed processing.