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.
Yeah, I'm not arguing about the REST path, I'm arguing about not using the go type's default value of "" to mean the default. Perhaps we need to make a custom type to represent namespaces.