text: Title: Revisit save/load architecture
  Body: _Originally posted by @gojomo in https://github.com/RaRe-Technologies/gensim/issues/3065#issuecomment-793064538_
  
  > My understanding is that pickle v5 has the hooks needed for the sort of custom-separate-serialization of things like numpy arrays, but it's not yet automatic/standard. So it's not a simple matter of "use v5 and we're done". But, if we thought extending it soon in that manner, perhaps after seeing what other recent v5 users have done with numpy arrays, was likely, then doing a one-hop to v5 now, rather than hop-to-v4 now then hop-to-v5 soon after, might be a way to minimize interim states and catch any potential gotchas sooner rather than later. (AFAICT, 'pickle5' is an official backport by the same Python core contributor who wrote the v5 PEP and Python3.8+ implementation, so it should have fewer risks than relying on other arbitrary external libs.) 
  
  > Even without 'upgrade-scripts', old-object-cleanup hooks that are analogous to `SaveLoad` 'specials'/etc seem possible via pickle - and if we relied on those instead, we might stay closer to other community Python practices. If we think that's the eventual future direction, we needn't break anything that works and is familiar right away - but we would want to discourage further growth/complexity in `SaveLoad` - so something like the recent lifecycle logging could move to a different superclass/mix-in.
  