Fix ##1067: Add a simple CrossProject mechanism

Maybe we should make this object-oriented instead? A non-sealed `CrossType` with two abstract methods: `sharedDir` and `subDir`?