Proposal: Initial namespaces proposal

This is based on feedback and discussion that came out of #1017 

There was discussion that the term project may be problematic, so have removed it in favor of namespace.

I think this aligns nicely with the ACL model discussed thus far.

Feedback appreciated.

@erictune @lavalamp @smarterclayton 


I think github ate my email response (or y'all are going to see this twice):

---

My argument is that for high scale systems you want your primary key to be the uniqueness constraint you want to impose.  Otherwise you have to enforce uniqueness transactionally or lazily.  Since enforcing uniqueness is a primary requirement but retrieval by UUID is secondary, why not align guaranteeing uniqueness of name inside the namespace with the natural structure of the data store?

If we don't use namespace and name, then to enforce uniqueness you *have* to have a transactional secondary index, or you can't tell clients that something already exists.