Cancel the command in unbuffered QueryAsync

This is an optimization for SQL Server and potentially other providers.
Currently, if you Dispose an IEnumerable produced from QueryAsync .NET
will still run the SqlCommand through to calculate statistics and assign
out params.