WIP predefined upgrade strings.

1) Adds 2 interfaces: `INotifyExitCargo` and `INotifyEnterCargo` (used in Passenger)
2) Adds interface `IResolvePredefinedUpgrades` (could possibly be reflected for docs), does not enforce a dictionary or any other specific implementation
3) Passenger now handles upgrades for Cargo
4) The commit message explains the test changes present which will of course be removed before merging

I'm sure this has quite a ways to go but I'd rather open this PR than let the feature rot.