cmState: Track known projects

Add a member to directory state that records the set of known projects.
Add a method to query whether a project exists.

Internally, while this doesn't allow us to confirm that a variable like
`foo_VERSION` is actually associated with a project `foo`, it provides a
much stronger indicator than the mere existence of said variable.
3 files changed