T3445
Create all new Cashtab wallets with only Path1899. Support legacy paths if you find them. Get rid of hardcoded paths at hardcoded keys.
Large diff. Most of the changes involve updates to mocks used by unit and integration tests.
We could have split this somewhat -- migrated from balances to balanceSats in one diff, and then from hardcoded Path1899 to paths array in another -- but imo it is better to limit the number of wallet migrations overall than to do more "smaller" wallet migrations.
The key changes in this diff
- Update isValidCashtabWallet to accept new shape and reject old shape
- Update createNewCashtabWallet to create new shape, importantly, new wallets are only created with Path1899 (not Path145 and Path245)
- We support migrating Path145 and Path245 if we find a wallet with these paths. In practice, Cashtab has used Path1899 as the only change address for multiple years. Only a user with a still-in-localforage cashttab wallet that has not been used for 2 years would have money at these paths. We could consider deprecating them entirely, but, since it is not really more complicated to support multiple paths as we do it already, might as well keep doing it. Might come in useful later. Certainly makes it easier to implement HD wallets if we decide to do this.
- Note the updates to migration integration tests in App.test.js. Since we are changing shape, now any wallet we find in legacy localforage keys wallet and savedWallets is expected to be invalid.
- Changes to how wallets are migrated in loadCashtabState to account for the new paths key and support for legacy paths.