Add support for a project resource

This is an initial pull request to add support for a Project resource.  

The Project resource is not scoped by Kubernetes namepace, but it's used to reserve a Kubernetes namespace for origin users.  A project can be created to associate with an existing Kubernetes namespace, or the namespace is taken from the Project id.  This is limited API support to do basic CRUD operations.  There is no Watch support at this time.  Project has limited metadata with more to follow based on UX input.
Agreed.  Trello card was create and list, we will need to do update in future.  

Sent from my iPhone

> On Oct 14, 2014, at 1:44 PM, Jessica Forrester <notifications@github.com> wrote:
> 
> In pkg/project/registry/etcd/etcd.go:
> 
> > +	var project api.Project
> > +	if err := r.ExtractObj(makeProjectKey(ctx, id), &project, false); err != nil {
> > +		return nil, etcderr.InterpretGetError(err, "project", id)
> > +	}
> > +	return &project, nil
> > +}
> > +
> > +// CreateProject creates a new project
> > +func (r *Etcd) CreateProject(ctx kubeapi.Context, project *api.Project) error {
> > +	err := r.CreateObj(makeProjectKey(ctx, project.ID), project, 0)
> > +	return etcderr.InterpretCreateError(err, "project", project.ID)
> > +}
> > +
> > +// UpdateProject updates an existing project
> > +func (r *Etcd) UpdateProject(ctx kubeapi.Context, project *api.Project) error {
> > +	return errors.New("not supported")
> at some point we should allow at least display name and description to be updated
> 
> —
> Reply to this email directly or view it on GitHub.