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 think it will seem odd for the "average" user that normal GET and POST operate only on one namespace, but list and watch can operate on all namespaces.  The things that need to list/watch all objects are special cases like controllers.  I wonder if we should put the burden on those special cases to explicitly say they want to see all namespaces. 

To that end, what if namespace is required to be specified for list and watch, but you can optionally specify "__ALL" in the namespace parameter to match all namespaces?  What do you think?

Also thinking about the three different types of "default" namespaces and whether those should have their own special identifiers.