Refactor, creating CardPlayerDataBlackjack as a separate subclass of CardPlayerData, with a separate ProtoBuf message as well. Allows for more Blackjack-specific per-player content. This is mainly to support Split well, but helps Insurance as well.
Originally I tried to do this in a bit of a nicer way with generics, casting PlayerData in CardGameController to the player data type of the subclass. But generics and MonoBehaviours really don't mix well. In the end there's just a bit of casting instead.
Improve how we pay out scrap after a server save/load, so that nothing gets lots (not even in-progress bets). This still isn't ideal since when we need to drop scrap, it falls through the train due to the items-fall-through-vehicles problem. I'll look for a better solution if there's time.
If the caboose is destroyed, try to pay all scrap that's in as bets or in player storage out to the players, based on the amounts they've each put in. If for whatever reason this can't be done, drop it on the ground.
Player can double down on any two cards if neither is an ace (some rules only allow DD on a card value of 9-11). They double their bet and receive one extra face up card. The bet is then dealt with normally (some rules say that if the dealer has Blackjack, the dealer only collects the amount of the original bet).