Fix ##1067: Add a simple CrossProject mechanism

WAT? You have this nice immutable copy-based `CrossProject` data structure, and then you make it mutable in the inside? Why would you do that for?