Enforce namespace unique constraints

This is the update to actually enable namespace support.

At the moment, I pass a namespace as a query parameter in order to support namespace scoping on the v1beta urls.  Once v1beta3 lands, I will modify to pass namespace in the path.  Note the client libraries were modified to make this easy to do, so should be a trivial change once ready.

I broke the commits into logical sections to improve readability.
I had the same argument earlier - derek had something that half convinced me (convenience for client code writers), although that may be solvable.  Derek, sway me back??? :)


> On Oct 10, 2014, at 2:17 PM, Daniel Smith <notifications@github.com> wrote:
> 
> In pkg/client/request.go:
> 
> > @@ -74,6 +74,15 @@ func (r *Request) Sync(sync bool) *Request {
> >  	return r
> >  }
> >  
> > +// Namespace sets a namespace parameter on a request based on the value in the context
> > +func (r *Request) Namespace(ctx api.Context) *Request {
> Is there a reason why this function takes an api.Context? That is for tracking client requests server side. There is not much sense forcing clients to use it, no? I think this should just take a string. I also think it's something you should set on the client object, not the request object-- if you're doing namespaced operations, you probably want many in a row with the same namespace.
> 
> Very sorry for not noticing this earlier, I was out all last week and have just been catching up this week.
> 
> —
> Reply to this email directly or view it on GitHub.