What was before was a factory function, however that forced to have a
pattern like:
async with (await cursor.copy()) as copy
Now instead what should be used is:
async with cursor.copy() as copy
With this change the user pretty much is never exposed anymore to a Copy
object in a non-entered state. This is actually useful because it
reduces the surface of the API: now for instance Copy.finis() can become
a private method.