Perform GetObjectMetadata before attempting ListObjects on non-wildcarded URLs.

This change reverts non-wildcarded URL behavior to be similar to how it was in gsutil 3.x, where we assumed a non-wildcarded object URL was an object instead of a directory. It ensures that operations on non-wildcarded object URLs are not affected by eventual listing consistency. As a trade-off, we cannot flag the case where an object and prefix of the same name exist, and the directory will be silently omitted.
CR feedback round 1