tighten validation on client gets

This is corresponding origin change for: https://github.com/GoogleCloudPlatform/kubernetes/pull/2864

Currently, client Get calls that are missing names end up building a URL that hits the list API, but attempt to cast that resource list into a resource.  That produces an error message that looks like this: 
```
data of kind '<Resource>List', obj of type '<Resource>'
```

The cli protects you making such a call, but direct client API callers can still make the mistake. Even though it is caller error, the error message could be more obvious.

@derekwaynecarr you reviewed the kubernetes change.  This is just the matching one.
> just make Path("") return an error

Doing so keeps the error on the client side (good), but means that the error can't be as specific.  "You can't have an empty path" versus "you can't have an empty name".  What is your preference: specific, general, or both?