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.
It would be really good to get this in for the breakage day; specifically the change to the etcd storage, since it completely breaks clusters.  And we seem to agree on that.

We aren't going to get the defaulting and the resource paths exactly right in the next day.  So, let's check in what we have got and then defer fixing those to a later release(s).