Fixed #23376 -- Make documentation about required Storage methods consistent.

The following methods **should** be implemented, but are not required:

 * Storage.delete()
 * Storage.exists()
 * Storage.listdir()
 * Storage.size()
 * Storage.url()

Updated documentation to reflect this fact and give a couple of examples
where some methods may not be implemented. Add a warning that not
implementing some methods will result in a partial (possibly broken)
interface.
The way the sentence starts doesn't indicate an example usage pattern, but a specific caveat/callout. Possibly lead with "By way of example" or something?
`list` = `listing`
(Personally) I'd avoid calling out a specific backend, perhaps instead referring to them as key-based, or non-filesystem based, or something. I'm not sure what the best nomenclature would be, though.