Make Cartfile optional if Cartfile.private exists

Fixes #254 
Maybe we can `zip` these two signals together instead, and then `map` over the result to append them together?