storage/aws: Factor the canonical path logic

It also ensures that passing an object_name starting with a / won't generate
a URL with a double // on the front of the path.