Make snapshot_get_branches return a TypedDict containing SnapshotBranch objects.
Instead of untyped dictionaries.
This makes snapshot_get longer and duplicates its code across backends; but snapshot_get should be removed soon.
Related: T645
Migrated from D3740 (view on Phabricator)