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.
Using "" as the default does not work when persisting in etcd where we need a namespace path separator in the key path.  I would like to vote that its too late, but I am not sure how much my vote matters ;-)  What is here is consistent to what was agreed to in the namespaces.md proposal.