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.
+1 @erictune - I think we can refine the default behavior on context in a subsequent PR.  The particular func that @lavalamp is commenting on was only introduced as a code clean-up for how we handle backwards compatible API patterns.  We already  know that some code will change there as we put the namespace in the resource path URLs, so it may end up being that this entire function can be removed at that time.

I guess what I am saying, is I would like to get this merged, and refine after, as it has been sitting a long time.