* initial anisette V3 implementation
* update V3 urls and log version
* fix crash where FetchAnisetteDataOperation.clientInfo would be nil when getting anisette V3 without provisioning first
* move adi.pb reset to its own button instead of doing it on sign out
* fallback to V1 if client_info fails
* make sure to unwrap optional strings
* feat(anisette): update v3 usage, improve error messages and names, report v3 errors to the user
* refactor(anisette): reduce duplicate JSON to anisette code
* fixes(anisette v3): improve errors, fix v3 server check, fix some edge cases where SideStore could crash and instead return an error, retry on -45061
Treating AltKit as a full module resulted in more complexity than necessary, when we really just wanted to share some files between different targets. Now we can share individual files across modules as-needed without AltKit overhead.
Assuming the certificate used to originally sign an app is still valid, we can refresh an app simply by installing new provisioning profiles. However, if the signing certificate is no longer valid, we fall back to the old method of resigning + reinstalling.