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.
We should fix RESTClient so that it has Namespace, ResourceName, and Name methods that enforce a specific pattern.  Been meaning to open something upstream.  Assume that those will exist, and that an error can be set when Name is empty.  What's the next step?


> On Dec 15, 2014, at 7:40 AM, David Eads <notifications@github.com> wrote:
> 
> In pkg/client/buildconfigs.go:
> 
> > @@ -51,6 +53,10 @@ func (c *buildConfigs) List(label, field labels.Selector) (result *buildapi.Buil
> >  
> >  // Get returns information about a particular buildconfig and error if one occurs.
> >  func (c *buildConfigs) Get(name string) (result *buildapi.BuildConfig, err error) {
> > +	if len(name) == 0 {
> > +		return nil, errors.New("name is required parameter to Get")
> > +	}
> > +
> >  	result = &buildapi.BuildConfig{}
> >  	err = c.r.Get().Namespace(c.ns).Path("buildConfigs").Path(name).Do().Into(result)
> 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?
> 
> —
> Reply to this email directly or view it on GitHub.
>