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 agree we should serialize with "default". I think what I'm asking for is for contexts to always start out with the namespace "default", so that this function is not needed. It's working around go's default value. Instead, I'd like a function that produces a namespace that finds everything for those few users that require that behavior.