Add constructor to Project.

Project has a private constructor that doesn't check
graph structure and a public one that does. The public one
is easier to use than before.

The structure checking is now in a separate object that can
implement other general graph methods.