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
I think a RESTMapping should be a thing that InterfacesFor() returns? It seems backwards to have RESTMapping depend on InterfacesFor(). If each versioned package supplied a RESTMapper, there'd be no dependency, right?