Rework client.Interface

Fixes #1708 

This is a WIP proposal for how we could have an alternate client pattern.

Goals:

1. Keep client stateless
2. Make client operate in a Noun -> Verb style
3. Make code clear when client namespace switches

Sample Code:
```
client := ...

// list pods across all namespaces
pods, err := client.Pods("*").List(selector)
// list pods in the default namespace
pods, err := client.Pods("default").List(selector)
// create a pod in default namespace
pod, err := client.Pods("default").Create(pod)

// work with services
services, err := client.Services("*").List(selector)
services, err := client.Services("default").List(selector)
...

// work with minions
minions, err := client.Minions().List()
```

Please provide feedback, as I will not make rest of this change until we agree on pattern.
To be clear you are referring to the struct name?

Sent from my iPhone

> On Oct 23, 2014, at 6:24 PM, Daniel Smith <notifications@github.com> wrote:
> 
> In pkg/client/minions.go:
> 
> > +	"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
> > +)
> > +
> > +type MinionsInterface interface {
> > +	Minions() MinionInterface
> > +}
> > +
> > +type MinionInterface interface {
> > +	Get(id string) (result *api.Minion, err error)
> > +	Create(minion *api.Minion) (*api.Minion, error)
> > +	List() (*api.MinionList, error)
> > +	Delete(id string) error
> > +}
> > +
> > +// MinionsClient implements Minions interface
> > +type MinionsClient struct {
> Suggestion: these client things don't need to be public. "minionsClient"? or just "minions"?
> 
> —
> Reply to this email directly or view it on GitHub.