Revamp project lifecycle.

Now that modes come and go all the time, we were hibernating and waking
projects over and over again which was breaking things and causing a lot of
pointless churn.

So we no longer reference projects from modes and other modes. We just let
projects live as long as the workspace that owns them is around. Maybe later
we'll go in and hibernate a project that hasn't been used in a while, but for
now I don't think that's worth the trouble.