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 should be possible to *override* the namespace on a particular request, if necessary. Just like we have defaults for other things, the client has a namespace setting which requests get by default, but if you need to change the namespace for a particular request, you can.

The common client functions should be able to get the namespace out of the object, anyway, you shouldn't have to pass it again in a context. I can't think of a reason why server components should even need to reference namespaces, other than perhaps copying it from a {replicationController,pod} to a {pod,binding}.