Define a mapping between REST resource name and kind/apiVersion

Allows clients to abstractly map user input to generic resource
paths as per docs/api-conventions.md

Extracted from #2000 and supports #1958
What is the use case for getting an object from a rest path? Can we not track this? As you make clear from having to take a priority list of versions, version is not well defined for all path names. I'm thinking our model should be that first you figure out what version you're going to talk, and then you figure out what your paths are, but maybe you have some use case that breaks this?