Based on the discussion in https://developer.blender.org/T60557#601013
There are still quite few things missing here, but maybe someone wants to test if it actually makes sense.
Also performance wise some things could be much better.
E.g. in theory it is not necessary to store all the changed elements, however I'd like to keep the new-active-decision out of the selection code.
@Brecht Van Lommel (brecht), can I make a new generic ArrayBase that is similar to ListBase but more efficient in many cases.
It would just be an array that doubles in size when it is full.