Improved RequesterPays detection
Created by: agraubert
Moved the requestor pays cache from class-level to instance-level. Allows for localizer instances with different backends to appropriately detect requester pays status through their backend.
Also improved the detection method itself. First check the bucket itself, then try checking the object if the user does not have permissions to the bucket. Raise an exception if the user still does not have permissions to the object