generate_packets.py: add separate class for array sizes
Note: While it's clear what they're used for in the code, I was only able to guess what the d, u and o in the original field names stood for exactly, since even digging through the mailing list archive didn't reveal any documentation – presumably "declared", "used" and "old"; I changed the u to "real", since it's the real_packet field.
Part of #43927. Field class currently has three separate fields for the three components of an array size (or string / memory length) ~> package those into one object of a new class SizeInfo, and move appropriate parsing code to that class.